This shows you the differences between two versions of the page.
tutorials:dvk521:documentations:a20:driver_porting_and_configuration [2013/12/10 16:15] waveshare |
tutorials:dvk521:documentations:a20:driver_porting_and_configuration [2014/03/13 14:44] (current) waveshare |
||
---|---|---|---|
Line 3: | Line 3: | ||
The I/O control driver is built as a module, can be used for controlling common peripherals, such as LED, push button, buzzer. | The I/O control driver is built as a module, can be used for controlling common peripherals, such as LED, push button, buzzer. | ||
- | Copy [[http://dl.cubieboard.org/parteners/waveshare/Source_Code/A20/Driver%20and%20API/driver/|io_control_dev]] to your ubuntu system, compile it with your own system setting (refer to Appendix 1 "Compiling Driver Module"), and copy the generated io_control.ko file to the board, use the following command to load the driver module: | + | Copy [[http://dl.cubieboard.org/parteners/waveshare/Source_Code/a20-cubieboard-dvk/Driver%20and%20API/driver/|io_control_dev]] to your ubuntu system, compile it with your own system setting (refer to Appendix 1 "Compiling Driver Module"), and copy the generated io_control.ko file to the board, use the following command to load the driver module: |
$insmod io_control.ko | $insmod io_control.ko | ||
Now you can start to try the I/O control API demo (refer to Appendix 2 "Running API Demo"). | Now you can start to try the I/O control API demo (refer to Appendix 2 "Running API Demo"). | ||
Line 41: | Line 41: | ||
Reboot the system, insert the DS18B20 device. | Reboot the system, insert the DS18B20 device. | ||
- | Copy [[http://dl.cubieboard.org/parteners/waveshare/Source_Code/A20/Driver%20and%20API/driver/|ds18b20l_dev]] to your ubuntu system, compile it with your own system setting (refer to Appendix 1 "Compiling Driver Module"), and copy the generated w1-sun4i.ko file to the board, use the following command to load the driver: | + | Copy [[http://dl.cubieboard.org/parteners/waveshare/Source_Code/a20-cubieboard-dvk/Driver%20and%20API/driver/|ds18b20_dev]] to your ubuntu system, compile it with your own system setting (refer to Appendix 1 "Compiling Driver Module"), and copy the generated w1-sun4i.ko file to the board, use the following command to load the driver: |
$insmod w1-sun4i.ko | $insmod w1-sun4i.ko | ||
Line 49: | Line 49: | ||
{{..:Documentations-6_1.jpg}} | {{..:Documentations-6_1.jpg}} | ||
+ | |||
==== Porting I2C Bus Driver ==== | ==== Porting I2C Bus Driver ==== | ||
Line 74: | Line 75: | ||
twi1_scl = port:PB18<2><default><default><default> | twi1_scl = port:PB18<2><default><default><default> | ||
twi1_sda = port:PB19<2><default><default><default> | twi1_sda = port:PB19<2><default><default><default> | ||
- | Then convert it into script.bin format by using fex2bin, and replace the earlier script.bin on the board. (for more info, refer to the document [[tutorials:DVK521:Documentations:A10:Prepare for Kernel and Drivers Porting|Prepare for Kernel and Drivers Porting]] | + | Then convert it into script.bin format by using fex2bin, and replace the earlier script.bin on the board. (for more info, refer to the document [[tutorials:DVK521:Documentations:A20:Prepare for Kernel and Drivers Porting|Prepare for Kernel and Drivers Porting]] |
Reboot the system. | Reboot the system. | ||
- | For more info about testing the AT24/FM24 module, like reading/writing data, please refer to the document [[tutorials:DVK521:Documentations:A10:DVK521 User Manual|DVK521 User Manual]] and Appendix 2 "Running API Demo". | + | For more info about testing the AT24/FM24 module, like reading/writing data, please refer to the document [[tutorials:DVK521:Documentations:A20:DVK521 User Manual|DVK521 User Manual]] and Appendix 2 "Running API Demo". |
Line 93: | Line 94: | ||
help | help | ||
Allwinner Soc SPI controller,present on SUN7I chips. | Allwinner Soc SPI controller,present on SUN7I chips. | ||
+ | |||
config SUN7I_SPI_NDMA | config SUN7I_SPI_NDMA | ||
bool "SUN7I SPI Normal DMA mode select" | bool "SUN7I SPI Normal DMA mode select" | ||
Line 291: | Line 293: | ||
=== Config the script.fex === | === Config the script.fex === | ||
Since the touch screen is connected to I2C1 controller, make sure the I2C driver has been ported (refer to the previous section "Porting I2C Bus Driver"). | Since the touch screen is connected to I2C1 controller, make sure the I2C driver has been ported (refer to the previous section "Porting I2C Bus Driver"). | ||
- | Config the [ctp_para] setting in script.fex. | + | Config the [ctp_para],[ctp_list_para],and[gpio_para] setting in script.fex. |
ctp_name:driver name | ctp_name:driver name | ||
ctp_twi_id:I2C controller which is actually used | ctp_twi_id:I2C controller which is actually used | ||
Line 317: | Line 319: | ||
ctp_firm = 1 | ctp_firm = 1 | ||
ctp_wakeup = port:PB13<1><default><default><1> | ctp_wakeup = port:PB13<1><default><default><1> | ||
+ | | ||
+ | [ctp_list_para] | ||
+ | ctp_det_used = 1 | ||
+ | ft5x_ts = 1 | ||
+ | gt82x = 0 | ||
+ | gslX680 = 0 | ||
+ | gt9xx_ts = 0 | ||
+ | gt811 = 0 | ||
| | ||
[gpio_para] | [gpio_para] | ||
Line 442: | Line 452: | ||
sun4i_csi1.ko: | sun4i_csi1.ko: | ||
/lib/modules/3.4.61+/kernel/drivers/media/video/sun4i_csi/csi1 | /lib/modules/3.4.61+/kernel/drivers/media/video/sun4i_csi/csi1 | ||
- | Replace the earlier uImage on the board with the new generated uImage under arch/arm/boot/ directory via NFS. (for more info, refer to the document [[tutorials:DVK521:Documentations:A10:Prepare for Kernel and Drivers Porting|Prepare for Kernel and Drivers Porting]] | + | Replace the earlier uImage on the board with the new generated uImage under arch/arm/boot/ directory via NFS. (for more info, refer to the document [[tutorials:DVK521:Documentations:A20:Prepare for Kernel and Drivers Porting|Prepare for Kernel and Drivers Porting]] |
Copy the above 4 driver files to the board, and install them in order: | Copy the above 4 driver files to the board, and install them in order: | ||
Line 452: | Line 462: | ||
=== Config the script.fex === | === Config the script.fex === | ||
- | Since our OV7670 camera is connected to the CSI1 controller, config the [csi1_para] setting in script.fex. The suffix _b in the parameter name indicates that this is a secondary camera parameter while two cameras were connected to the same CSI. | + | Since our OV7670 camera is connected to the CSI1 controller, config the [csi1_para] and [camera_list_para] setting in script.fex. The suffix _b in the parameter name indicates that this is a secondary camera parameter while two cameras were connected to the same CSI. |
The parameters are interpreted as follows: | The parameters are interpreted as follows: | ||
Line 499: | Line 509: | ||
[csi1_para] | [csi1_para] | ||
csi_used = 1 | csi_used = 1 | ||
- | csi_mode = 0 | ||
csi_dev_qty = 1 | csi_dev_qty = 1 | ||
csi_stby_mode = 0 | csi_stby_mode = 0 | ||
csi_mname = "ov7670" | csi_mname = "ov7670" | ||
- | csi_twi_id = 1 | ||
- | csi_twi_addr = 0x42 | ||
csi_if = 0 | csi_if = 0 | ||
- | csi_vflip = 1 | + | csi_iovdd = "axp20_pll" |
- | csi_hflip = 0 | + | |
- | csi_iovdd = "" | + | |
csi_avdd = "" | csi_avdd = "" | ||
csi_dvdd = "" | csi_dvdd = "" | ||
+ | csi_vol_iovdd = 2800 | ||
+ | csi_vol_dvdd = | ||
+ | csi_vol_avdd = | ||
+ | csi_vflip = 1 | ||
+ | csi_hflip = 0 | ||
csi_flash_pol = 1 | csi_flash_pol = 1 | ||
- | csi_mname_b = "" | + | csi_facing = 1 |
- | csi_twi_id_b = 0 | + | csi_twi_id = 1 |
- | csi_twi_addr_b = 0x78 | + | csi_twi_addr = 0x42 |
- | csi_if_b = 0 | + | |
- | csi_vflip_b = 1 | + | |
- | csi_hflip_b = 0 | + | |
- | csi_iovdd_b = "" | + | |
- | csi_avdd_b = "" | + | |
- | csi_dvdd_b = "" | + | |
- | csi_flash_pol_b = 1 | + | |
csi_pck = port:PG00<3><default><default><default> | csi_pck = port:PG00<3><default><default><default> | ||
csi_ck = port:PG01<3><default><default><default> | csi_ck = port:PG01<3><default><default><default> | ||
csi_hsync = port:PG02<3><default><default><default> | csi_hsync = port:PG02<3><default><default><default> | ||
csi_vsync = port:PG03<3><default><default><default> | csi_vsync = port:PG03<3><default><default><default> | ||
- | csi_field = | ||
csi_d0 = port:PG04<3><default><default><default> | csi_d0 = port:PG04<3><default><default><default> | ||
csi_d1 = port:PG05<3><default><default><default> | csi_d1 = port:PG05<3><default><default><default> | ||
Line 535: | Line 537: | ||
csi_d6 = port:PG10<3><default><default><default> | csi_d6 = port:PG10<3><default><default><default> | ||
csi_d7 = port:PG11<3><default><default><default> | csi_d7 = port:PG11<3><default><default><default> | ||
- | csi_d8 = | + | csi_reset = port:PH13<1><default><default><0> |
- | csi_d9 = | + | csi_power_en = port:PH16<1><default><default><0> |
- | csi_d10 = | + | csi_stby = port:PH19<1><default><default><0> |
- | csi_d11 = | + | |
- | csi_d12 = | + | [camera_list_para] |
- | csi_d13 = | + | camera_list_para_used = 1 |
- | csi_d14 = | + | ov7670 = 1 |
- | csi_d15 = | + | gc0308 = 0 |
- | csi_d16 = | + | gt2005 = 0 |
- | csi_d17 = | + | hi704 = 0 |
- | csi_d18 = | + | sp0838 = 0 |
- | csi_d19 = | + | mt9m112 = 0 |
- | csi_d20 = | + | mt9m113 = 0 |
- | csi_d21 = | + | ov2655 = 0 |
- | csi_d22 = | + | hi253 = 0 |
- | csi_d23 = | + | gc0307 = 0 |
- | csi_reset = port:PH14<1><default><default><0> | + | mt9d112 = 0 |
- | csi_power_en = | + | ov5640 = 0 |
- | csi_stby = port:PH17<1><default><default><0> | + | gc2015 = 0 |
- | csi_flash = | + | ov2643 = 0 |
- | csi_af_en = | + | gc0329 = 0 |
- | csi_reset_b = | + | gc0309 = 0 |
- | csi_power_en_b = | + | tvp5150 = 0 |
- | csi_stby_b = | + | s5k4ec = 0 |
- | csi_flash_b = | + | ov5650_mv9335 = 0 |
- | csi_af_en_b = | + | siv121d = 0 |
- | Then convert it into script.bin format by using fex2bin, and replace the earlier script.bin on the board. (for more info, refer to the document [[tutorials:DVK521:Documentations:A10:Prepare for Kernel and Drivers Porting|Prepare for Kernel and Drivers Porting]] | + | gc2035 = 0 |
+ | |||
+ | Then convert it into script.bin format by using fex2bin, and replace the earlier script.bin on the board. (for more info, refer to the document [[tutorials:DVK521:Documentations:A20:Prepare for Kernel and Drivers Porting|Prepare for Kernel and Drivers Porting]] | ||
Connect the OV7670 camera module and the LCD to the board, reboot the system. | Connect the OV7670 camera module and the LCD to the board, reboot the system. | ||
Line 568: | Line 572: | ||
==== Appendix 1: Compiling Driver Module ==== | ==== Appendix 1: Compiling Driver Module ==== | ||
- | The provided xx.ko files under [[http://dl.cubieboard.org/parteners/waveshare/Source_Code/A10/Driver%20and%20API/Driver/|Driver]] is compiled to run on our system image only. | + | The provided xx.ko files under [[http://dl.cubieboard.org/parteners/waveshare/Source_Code/a20-cubieboard-dvk/Driver%20and%20API/driver/|Driver]] is compiled to run on our system image only. |
If the drivers are going to being loaded on your own system, they need to be re-compiled according to you system kernel path. | If the drivers are going to being loaded on your own system, they need to be re-compiled according to you system kernel path. | ||
Line 574: | Line 578: | ||
Use the io_control_dev.ko for demonstration. | Use the io_control_dev.ko for demonstration. | ||
- | 1.1 Copy the [[http://dl.cubieboard.org/parteners/waveshare/Source_Code/A10/Driver%20and%20API/Driver/|io_control_dev]] to ubuntu, assume the target directory is /home/waveshare/cubieboard/waveshare_demo/driver . | + | 1.1 Copy the [[http://dl.cubieboard.org/parteners/waveshare/Source_Code/a20-cubieboard-dvk/Driver%20and%20API/driver/|io_control_dev]] to ubuntu, assume the target directory is /home/waveshare/cubieboard2/waveshare_demo/driver . |
Modify the files permission: | Modify the files permission: | ||
- | #cd /home/waveshare/cubieboard/waveshare_demo/driver/io_control_dev | + | #cd /home/waveshare/cubieboard2/waveshare_demo/driver/io_control_dev |
- | {{..:Documentations-6_2.jpg}} | + | {{:tutorials:dvk521:documentations:a20:a20_6_1.jpg}} |
#chmod 777 ./* | #chmod 777 ./* | ||
| | ||
1.2 Modify the Makefile | 1.2 Modify the Makefile | ||
#vi Makefile | #vi Makefile | ||
- | {{..:Documentations-6_3.jpg}} | + | {{:tutorials:dvk521:documentations:a20:a20_6_2.jpg}} |
Assign the KERNELDIR according to your actual kernel path. | Assign the KERNELDIR according to your actual kernel path. | ||
1.3 Clear the old files | 1.3 Clear the old files | ||
#make clean | #make clean | ||
- | {{..:Documentations-6_4.jpg}} | + | {{:tutorials:dvk521:documentations:a20:a20_6_3.jpg}} |
1.4 Compile | 1.4 Compile | ||
Line 597: | Line 602: | ||
make: *** [modules] Error 1 | make: *** [modules] Error 1 | ||
As shown in the picture below: | As shown in the picture below: | ||
- | {{..:Documentations-6_5.jpg}} | + | |
+ | {{:tutorials:dvk521:documentations:a20:a20_6_4.jpg}} | ||
It is caused by the different kernel version, can be just omitted. | It is caused by the different kernel version, can be just omitted. | ||
- | {{..:Documentations-6_6.jpg}} | + | {{:tutorials:dvk521:documentations:a20:a20_6_5.jpg}} |
Copy the new generated io_control.ko file to your own system and load it. | Copy the new generated io_control.ko file to your own system and load it. | ||