2010-10-21 07:43:08     Accessing camera with BF561

Document created by Aaronwu Employee on Aug 23, 2013
Version 1Show Document
  • View in full screen mode

2010-10-21 07:43:08     Accessing camera with BF561

shuja ahmed (UNITED KINGDOM)

Message: 94811   

 

Can you please tell me how to access camera through uClinux for BF561 processor.

I configured uboot for BF561. I dont have BF561 ezkit so I am using Eval-BF5xx board with Ext-BF5xx-Camera extender board. I flashed the uboot on BF561.

Then I configured/compiled uClinux kernel for BF561 processor and flashed it too. As we dont have i2C on BF561 processor, so I dont know how to access camera registers. when we use BF537E processor, we can simple "iprobe" from u-boot to see the device base address and then can access the camera registers. But for BF561, I dont know.

Or if you have any idea of how to access PPI in 561? I dont know if it is possible using Eval-BF5xx board but just to mention that with blacksheep, I am able to capture image using default "getimg" function.

I will be greatful for any suggestion.

QuoteReplyEditDelete

 

 

2010-10-21 16:15:28     Re: Accessing camera with BF561

Mike Frysinger (UNITED STATES)

Message: 94822   

 

we have a wiki with a search function.  please use it.

 

  docs.blackfin.uclinux.org/doku.php?id=i2c#soft_twi_interface

  docs.blackfin.uclinux.org/doku.php?id=ppi

QuoteReplyEditDelete

 

 

2010-10-22 07:28:30     Re: Accessing camera with BF561

shuja ahmed (UNITED KINGDOM)

Message: 94871   

 

Thanks for help.

 

I have gone through this help and find that soft i2c is something done in ezkit boards. What I wanted to ask is, can I enable soft i2c support for cm-bf561 board? I am using cm-bf561 board with Eval-Bf5xx and Ext-Bf5xx-Camera board to access the cmos camera registers. Soft i2c is possible in this configuration or not?

 

Meanwhile, I am going to edit "/arch/blackfin/mach-bf561/boards/cm-bf561.c" file and add soft i2c support as done in ezkit.c file.

 

I dont know whether some hardware changes would be required or not.

QuoteReplyEditDelete

 

 

2010-10-22 11:24:14     Re: Accessing camera with BF561

Mike Frysinger (UNITED STATES)

Message: 94880   

 

the soft-i2c driver merely requires 2 gpios.  if the board has two gpio pins, then it may use the soft-i2c driver.

QuoteReplyEditDelete

 

 

2010-10-26 22:22:11     Re: Accessing camera with BF561

shuja ahmed (UNITED KINGDOM)

Message: 95234   

 

I have gone through the following link

 

  docs.blackfin.uclinux.org/doku.php?id=i2c#soft_twi_interface

 

Did the following changes in cm-bf561.c

 

static struct i2c_gpio_platform_data i2c_gpio_data = {

  .sda_pin        = 44, //GPIO_PF44

  .scl_pin        = 47, //GPIO_PF47

  .sda_is_open_drain    = 0,

  .scl_is_open_drain    = 0,

  .udelay               = 40,

};

 

 

static struct platform_device i2c_gpio_device = {

    .name        = "i2c-gpio",

    .id        = 0,

    .dev        = {

        .platform_data    = &i2c_gpio_data,

    },

};

 

Now in uClinux kernel, i have /dev/i2c-0 device appeared.

 

I am using Eval-BF5xx board together with Ext-BF5xx-Camera board on which 0v7660 cmos camera is installed.

 

Using i2c-tools, I am able to detect camera on i2c bus with device id 0x21.

 

root:/> i2cdetect 0

WARNING! This program can confuse your I2C bus, cause data loss and worse!

I will probe file /dev/i2c-0.

I will probe address range 0x03-0x77.

Continue? [Y/n] Y

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f

00:          -- -- -- -- -- -- -- -- -- -- -- -- --

10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

20: -- 21 -- -- -- -- -- -- -- -- -- -- -- -- -- --

30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

70: -- -- -- -- -- -- -- --                       

 

But now, I am facing a strange problem. I am not able to write to camera registers. Using the following command (i2cset 0x00 0x21 0x00 0x23 b), I wrote 0x23 at offset 0x00 of device id 0x21.

 

But if I try to read using (i2cget 0x00 0x21 0x00 b), it always read 0xa1.

 

Another observation is that, if I use "i2cdump 0 0x21" command, then every time, it gives different register values. Forexample, below I have shown the output of two i2cdump commands.

 

root:/> i2cdump 0 0x21

No size specified (using byte-data access)

WARNING! This program can confuse your I2C bus, cause data loss and worse!

I will probe file /dev/i2c-0, address 0x21, mode byte

Continue? [Y/n] Y

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef

00: a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 76 60 a1 a1 a1 a1    ??????????v`????

10: a1 a1 00 a1 a1 a1 a1 a1 a1 a1 a1 a1 7f a2 a1 a1    ??.?????????????

20: 8a a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1    ????????????????

30: a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1    ????????????????

40: a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1    ????????????????

50: a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1    ????????????????

60: a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1    ????????????????

70: a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1    ????????????????

80: a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1    ????????????????

90: a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1    ????????????????

a0: a1 a1 a1 a1 a1 a1 a1 82 a1 a1 a1 a1 a1 a1 a1 a1    ????????????????

b0: a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1    ????????????????

c0: a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1    ????????????????

d0: a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1    ????????????????

e0: a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1    ????????????????

f0: a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1    ????????????????

 

 

Another try

 

root:/> i2cdump 0 0x21

No size specified (using byte-data access)

WARNING! This program can confuse your I2C bus, cause data loss and worse!

I will probe file /dev/i2c-0, address 0x21, mode byte

Continue? [Y/n] Y

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef

00: 00 00 00 03 cc e7 40 cd a1 76 76 00 08 01 43 51    ...???@??vv.??CQ

10: 80 a1 00 a1 a1 a1 a1 a1 a1 a1 a1 a1 7f a2 a1 a1    ??.?????????????

20: 88 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1    ????????????????

30: a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1    ????????????????

40: a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1    ????????????????

50: a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1    ????????????????

60: a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 20 50 c0 a8 88    ??????????? P???

70: 80 78 70 68 58 a1 30 28 20 1e 18 02 07 1f 49 5a    ?xphX?0( ?????IZ

80: 6a 79 87 94 9f af bb cf df ee 00 00 0f 00 00 00    jy????????..?...

90: 00 00 00 50 50 00 01 10 40 40 20 00 99 7f 00 00    ...PP.??@@ .??..

a0: 00 00 00 a1 a1 a1 82 a1 a1 a1 a1 a1 a1 a1 a1 a1    ...?????????????

b0: a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 00 a1 a1    ?????????????.??

c0: a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1    ????????????????

d0: a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1    ????????????????

e0: a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1    ????????????????

f0: a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 a1 00    ???????????????.

 

This is a very strange behaviour.

 

Correct me if I am wrong. Could it be related to i2c speed. If it is, then how can I change i2c speed from kernel. Or I have to change it in uboot.

Attachments

    Outcomes