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. | ||