Device Tree Compiler

Hi Robert,

I am new to BeagleBone. Right now I am stuck up in the intial phase of using
SPI0 (once I am able to use SPI0, I would go for SPI1). I tried to run the
command for installing device tree compiler, but prompted "bash: dtc not
found"

I have on my BBB :

Linux arm 3.8.13xenomai-bone28.1 #1 SMP Thu Nov 21 09:53:58 CET 2013 armv7l
armv7l armv7l GNU/Linux

lots of bugs have been fixed since bone28...

And when I tried to install the dtc by sudo apt-get install dtc, it does not
work and gave error like:

Err http://security.ubuntu.com precise-security/universe Translation-en
  Something wicked happened resolving 'security.ubuntu.com:http' (-11 -
System error)

why do you have "security.ubuntu.com" enabled in /etc/apt/sources.list
? there is no armhf binaries on that server...

the same error appear when I used apt-get install for other packages.

I googled the error and accordingly two solutions:

1)
xfce - How do I set system-wide proxy servers in Xubuntu, Lubuntu or Ubuntu Studio? - Ask Ubuntu

I did what is asked for but still the same results. I want to tell that for
checking if my BBB has proxy I used the following command

env | grep -i proxy

Nothing got printed with this command (so there is no proxy) to from the
link above I only used the lines
no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
NO_PROXY="localhost,127.0.0.1,localaddress,.localdomain.com"

But I have a doubt since BBB device connect to PC via USB and when I use a
site to find my proxy it gives some IP, but when I used the command "env |
grep -i proxy". It does not print anything. I need your suggestion.

2) I added these two lines in the file /etc/resolvconf/resolv.conf.d/tail

nameserver 8.8.8.8
nameserver 8.8.4.4

and then sudo /etc/init.d/resolvconf restart

Still apt-get install does not work and gives the same error as

  Err http://security.ubuntu.com precise-security/universe Translation-en
  Something wicked happened resolving 'security.ubuntu.com:http' (-11 -
System error)

I would be highly obliged if you would give some suggestions.

Remove security and try again.

Regards,

OK, not meaning to derail the post but I would not know where else to say this. Personally, I think the device tree fragment such as is in 3.8.13* is perfect. I also rather like loading / disabling dtb’s from within uboot

Hi Robert,

I changed the /etc/apt/sources.list to the following:

deb http://ports.ubuntu.com/ubuntu-ports/ raring main universe multiverse
deb-src http://ports.ubuntu.com/ubuntu-ports/ raring main universe multiverse

deb http://ports.ubuntu.com/ubuntu-ports/ raring-updates main universe multiverse
deb-src http://ports.ubuntu.com/ubuntu-ports/ raring-updates main universe multiverse

Now the error while apt-get update is

Err http://ports.ubuntu.com raring-updates/universe Translation-en
Something wicked happened resolving ‘ports.ubuntu.com:http’ (-11 - System error)
W: Failed to fetch http://ports.ubuntu.com/ubuntu-ports/dists/raring/Release.gpg Something wicked happened resolving ‘ports.ubuntu.com:http’ (-11 - System error)

I would be highly obliged.

BR

Laughs! Doing random things is not going to fix this..

Let's look at your previous email:

"Err http://security.ubuntu.com precise-security/universe Translation-en"

okay, so it looked like you were on "precise" and i told you to drop
"security.ubuntu.com" which you did.. But now it's also "raring"

umm: "precise" =/= "raring" also "raring" is eol..

So at this point, i'm just going to say... "You" totally hosed your OS
doing some random stuff, that why it doesn't work..

Start over with a fresh image.

Regards,

Hi Robert,

Though I managed to enable the spi interface on my BB. I have following questions/information:

  1. I have following urls in /etc/apt/sources.list

THESE WERE EARLIER IN THE BBB

#deb http://ports.ubuntu.com/ubuntu-ports/ raring main universe multiverse
#deb-src http://ports.ubuntu.com/ubuntu-ports/ raring main universe multiverse

#deb http://ports.ubuntu.com/ubuntu-ports/ raring-updates main universe multiverse
#deb-src http://ports.ubuntu.com/ubuntu-ports/ raring-updates main universe multiverse

THESE I COPIED FROM THE link IN ORDER TO SOLVE THE PROBLEM

deb http://archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ precise-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu precise-security main restricted universe multiverse
deb http://archive.canonical.com/ubuntu precise partner
deb http://extras.ubuntu.com/ubuntu precise main

THESE I COPIED FROM MY DESKTOP
#deb http://archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse
#deb http://security.ubuntu.com/ubuntu/ precise-security main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu/ precise-update main restricted universe multiverse

NONE OF THEM WORKS, DO TELL ME WHAT ARE THE RIGHT URLS

  1. I could see these two files in /dev/spidev1.0 and /dev/spidev1.1 . Though I configures for the spi0 channel I think it should be like spidev0.0 and spidev0.1

  2. In order to check if I have configured the spidev correctly, I copied a file from here

http://osdir.com/ml/beagleboard/2013-05/msg00813.html

NOW WHEN I compile it using

gcc -c spidev_test.c

It gives error like

/usr/include/libio.h:334:3: error: unknown type name ‘size_t’
/usr/include/libio.h:338:67: error: ‘size_t’ undeclared here (not in a function)
/usr/include/libio.h:366:62: error: expected declaration specifiers or ‘…’ before ‘size_t’
/usr/include/libio.h:375:6: error: expected declaration specifiers or ‘…’ before ‘size_t’
/usr/include/libio.h:497:19: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘_IO_sgetn’
In file included from spidev_test.c:9:0:
/usr/include/stdio.h:320:35: error: expected declaration specifiers or ‘…’ before ‘size_t’
/usr/include/stdio.h:326:47: error: expected declaration specifiers or ‘…’ before ‘size_t’

Am I am compiling using wrong options ? Do tell me the correct one.

Hi Robert,

Though I managed to enable the spi interface on my BB. I have following
questions/information:

1) I have following urls in /etc/apt/sources.list

THESE WERE EARLIER IN THE BBB

#deb Index of /ubuntu-ports raring main universe multiverse
#deb-src Index of /ubuntu-ports raring main universe
multiverse

#deb Index of /ubuntu-ports raring-updates main universe
multiverse
#deb-src Index of /ubuntu-ports raring-updates main universe
multiverse

THESE I COPIED FROM THE link IN ORDER TO SOLVE THE PROBLEM

deb Index of /ubuntu precise main restricted universe
multiverse
deb Index of /ubuntu precise-updates main restricted
universe multiverse
deb Index of /ubuntu precise-backports main restricted
universe multiverse
deb Index of /ubuntu precise-security main restricted
universe multiverse
deb Index of /ubuntu precise partner
deb Index of /ubuntu precise main

THESE I COPIED FROM MY DESKTOP
#deb Index of /ubuntu precise main restricted universe
multiverse
#deb Index of /ubuntu precise-security main restricted
universe multiverse
#deb Index of /ubuntu precise-update main restricted
universe multiverse

NONE OF THEM WORKS, DO TELL ME WHAT ARE THE RIGHT URLS

"Yelling" isn't going to fix this problem, either is random coping the
right URLS's.

So to repeat:

<quote>
So at this point, i'm just going to say... "You" totally hosed your OS
doing some random stuff, that why it doesn't work..

Start over with a fresh image.
</quote>

2) I could see these two files in /dev/spidev1.0 and /dev/spidev1.1 . Though
I configures for the spi0 channel I think it should be like spidev0.0 and
spidev0.1

Nope it isn't..

3) In order to check if I have configured the spidev correctly, I copied a
file from here

http://osdir.com/ml/beagleboard/2013-05/msg00813.html

NOW WHEN I compile it using

gcc -c spidev_test.c

It gives error like

/usr/include/libio.h:334:3: error: unknown type name ‘size_t’

Really! "It gives error like" considering "size_t" isn't in that
source. Your definition of "like" is way different!!! Wow..

Regards,

build here:

debian@beaglebone:~$ gcc -c spi_test.c
debian@beaglebone:~$ ls -lh
total 20K
-rw-r--r-- 1 debian debian 1.3K Aug 27 19:36 spi_test.c
-rw-r--r-- 1 debian debian 1.8K Aug 27 19:37 spi_test.o

http://paste.debian.net/117888/

Regards,



What can be the meaning here?



Sent from Yahoo Mail on Android

|

What can be the meaning here?

Learn how to use your tools before half fast using / complaining about them ?

Hi all,

Thanks for your support till now. I am really grateful to you.

While I going through the reference manual of the arm processor on the BBB, I came to know that the processor has the capacity for 4 SPI channels but BBB only provides 2 channels.

  1. So I want to know if spidev1.0 and spidev1.1 are the interfaces for just one channel (because I have read the spidevB.C means channel B and device C) why are they two in number. Does these files represent the SLAVES which could be attached with this channel ?

And please understand that I am not yelling or complaining. I am just new to this kind of thing. While reading the material through web I gets answers but also get questions. I hope you all don’t mind my questions. I apologize if you do.

Hi all,

Thanks for your support till now. I am really grateful to you.

While I going through the reference manual of the arm processor on the BBB, I came to know that the processor has the capacity for 4 SPI channels but BBB only provides 2 channels.

  1. So I want to know if spidev1.0 and spidev1.1 are the interfaces for just one channel (because I have read the spidevB.C means channel B and device C) why are they two in number. Does these files represent the SLAVES which could be attached with this channel ?

I believe that is SPI Channel and SPI Chip Select.

Regards,
John

Hi John,

Thanks for your reply. You mean whatever we have to send and receive should be done via spidev1.0 only ?

Hi John,

Thanks for your reply. You mean whatever we have to send and receive should be done via spidev1.0 only ?

No, you can use any SPI interface and any chip select as long as they are defined in the devicetree. If you define the SPI device in the devicetree correctly then they will show up in /dev.

Regards,
John

Hi Robert,

I want to read/write data directly from the registers for SPI0.

  1. I read the arm335X manual for this.
  2. I am coding in C.
  3. According to the manual I have to first soft reset the the module. For this purpose I have to set the RESETDONE bit in the MCSPI_SYSCONFIG register.
  4. So I am first using mmap to map the device register.
  5. then using the offset I am reaching to the particular register’s address
  6. As soon as I do any operation with the content of the register I get Bus Error.

this is my code

#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

#include <sys/ioctl.h>
#include <linux/types.h>
#include <linux/spi/spidev.h>
//Xenomai for mapping the register
#include <sys/mman.h>

#define SPI0_START_ADDR 0x48030000 //mcspi0 data registers
#define SPI0_END_ADDR 0x48030FFF
#define SPI0_SIZE (SPI0_END_ADDR - SPI0_START_ADDR + 0x01) // 4KB
#define SPI1_START_ADDR 0x481A0000 //mcspi1 data registers
#define SPI1_END_ADDR 0x481A0FFF
#define SPI1_SIZE (SPI1_END_ADDR - SPI1_START_ADDR + 0x01) // 4KB

//print_output(void *data) {
// unsigned int *my_data = &
//}

int main (int *argc, int **argv)
{

printf("%d\n",sysconf(_SC_PHYS_PAGES));
mlockall (MCL_CURRENT | MCL_FUTURE);
int fd, outputfile;
struct stat attr;
void *spi0_addr = NULL;

//SPI Registers
volatile unsigned int *mcspi_revision = NULL;
volatile unsigned int *mcspi_sysconfig = NULL;
volatile unsigned int *mcspi_sysstatus = NULL;
volatile unsigned int *mcspi_irqstatus = NULL;
volatile unsigned int *mcspi_irqenable = NULL;
volatile unsigned int *mcspi_syst = NULL;
volatile unsigned int *mcspi_modulctrl = NULL;
volatile unsigned int *mcspi_ch0conf = NULL;
volatile unsigned int *mcspi_ch0stat = NULL;
volatile unsigned int *mcspi_ch0ctrl = NULL;
volatile unsigned int *mcspi_tx0 = NULL;
volatile unsigned int *mcspi_rx0 = NULL;

if ((fd = open("/dev/mem", O_RDWR | O_SYNC)) < 0) {
fprintf(stderr, “can not open /dev/mem!\n”);
exit(-1);
}
else {
printf(“Mapping %x - %x (size: 0x%x bytes)\n”, SPI0_START_ADDR, SPI0_END_ADDR, SPI0_SIZE);
}
if (fstat(fd,&attr) == -1) {
fprintf(stderr,“Error while fstat\n”);
}
//mapping the file /dev/mem
spi0_addr = mmap(NULL, 0x1000, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, SPI0_START_ADDR);
if (spi0_addr == MAP_FAILED) {
printf(“Mapping of the SPI0 failed!! \n”);
exit(1);
}
else {
printf("/dev/mem file is mapped\n");
}

//fprintf(stdout, “size of void* is : %d and size of volatile unsigned int * is: %d\n”,*((int *)spi0_addr),
// sizeof(*mcspi_rx0));
//fprintf(stdout,“Base address returned from the mmap is: %X and size of value
// returned is: %X \n”,(unsigned)spi0_addr, sizeof(*spi0_addr));

mcspi_revision = spi0_addr + 0x00;
mcspi_sysconfig = spi0_addr + 0x110;
mcspi_sysstatus = spi0_addr + 0x114;
mcspi_irqstatus = spi0_addr + 0x118;
mcspi_irqenable = spi0_addr + 0x11C;
mcspi_syst = spi0_addr + 0x124;
mcspi_modulctrl = spi0_addr + 0x128;
// spi0 channel
mcspi_ch0conf = spi0_addr + 0x12C;
mcspi_ch0stat = spi0_addr + 0x130;
mcspi_ch0ctrl = spi0_addr + 0x134;
mcspi_tx0 = spi0_addr + 0x138;
mcspi_rx0 = spi0_addr + 0x13C;

// Soft reset
*mcspi_sysconfig = ((*mcspi_sysconfig) | (0x2)); //<---------this is the point where I am getting an error as I am trying to acces the content of the register.
int temp = (*mcspi_sysconfig & 0x2);
printf(“0x%02X\n”,temp);
//checking if reset is done
//while (1) {
if (((*mcspi_sysstatus) & (0x00000001)) == 0x1) {
printf(“reset is complete\n”);
//break;
}
else {
printf(“reset is going on\n”);
}
//}

if ((outputfile = open("/home/ubuntu/dac/output_file.txt", O_RDWR | O_APPEND))<0) {
printf(“could not open the file\n”);
}

close(outputfile);
//mcspi_sysstatus = NULL;
//fprintf(stdout, “ch0conf: %x\n”, mcspi_sysstatus);
//fpirntf(stdout, “ch0stat: %x\n”, (unsigned int)mcspi_ch0stat);
//fprintf(stdout, “ch0ctrl: %x\n”, (unsigned int)mcspi_ch0ctrl);
//fprintf(stdout, “tx0: %x\n”, (unsigned int)mcspi_tx0);
//fpirntf(stdout, “rx0: %x\n”, (unsigned int)mcspi_rx0);

close(fd);

return 0;
}

Please give your suggestions about where I am going wrong.

thanks

Hi,