User Tools

Site Tools


tutorials:dvk521:documentations:a20:driver_porting_and_configuration

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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 ​+
-  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 ​
 + 
 +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. 
  
tutorials/dvk521/documentations/a20/driver_porting_and_configuration.1386663347.txt.gz · Last modified: 2013/12/23 14:50 (external edit)