<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # BSP Linux 內核編譯 由于主線內核暫不支持攝像頭控制器,所以需要使用BSP內核來使能攝像頭驅動。 下面講解編譯啟動BSP內核的方法。 ## BSP源碼下載編譯 BSP源碼在網盤中的camdriod和lichee里。 camdriod是camdriod代碼,lichee是linux代碼和打包相關腳本。 下載解壓這兩個文件到工作目錄下。 在camdriod目錄下使用下述命令進行camdriod編譯,其中的選項都選第一個即可。 ~~~ source build/envsetup.sh lunch mklichee extract-bsp make -j8 pack ~~~ 執行過程中會生成內核文件: ~~~ Image Name: Linux-3.4.39 Created: Tue Sep 5 06:55:03 2017 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 2275400 Bytes = 2222.07 kB = 2.17 MB Load Address: 40008000 Entry Point: 40008000 Image arch/arm/boot/uImage is ready 'arch/arm/boot/Image' -> 'output/bImage' 'arch/arm/boot/uImage' -> 'output/uImage' 'arch/arm/boot/zImage' -> 'output/zImage' Building modules compile Kernel successful ~~~ 從主線uboot啟動內核,一般使用uImage。 ## BSP內核配置 BSP內核源碼在lichee/linux-3.4下。 一般來說是通過make ARCH=arm menuconfig來配置內核(配置文件為.config),但是camdriod的構建系統中,會使用 `camdriod/device/softwinner/tiger-cdr/custom/dualCam/lichee/sun8iw8p1smp_tiger_cdr_defconfig` 來覆蓋該配置,所以需要在menuconfig里配置好內核后,覆蓋該配置文件。 使能攝像頭需要修改的一些內核配置: 使能USB攝像頭驅動: ~~~ -> Device Drivers x -> Multimedia support (MEDIA_SUPPORT [=y]) x -> Video capture adapters (VIDEO_CAPTURE_DRIVERS [=y]) x -> V4L USB devices (V4L_USB_DRIVERS [=y]) x -><M> USB Video Class (UVC) CONFIG_USB_VIDEO_CLASS ~~~ 使能DVP/MIPI攝像頭 ~~~ -> Device Drivers x -> Multimedia support (MEDIA_SUPPORT [=y]) x -> Video capture adapters (VIDEO_CAPTURE_DRIVERS [=y]) x -> V4L platform devices (V4L_PLATFORM_DRIVERS [=y]) x -> SoC camera support (SOC_CAMERA [=y]) x x <M> ov2640 camera support x x <M> ov5647 camera support x x <M> sunxi video front end (camera and etc)driver x x <M> v4l2 driver for SUNXI <*> sunxi video encoder and decoder support ~~~ 由于camdriod原始的內核配置是為了在spi nor flash上運行而配置的,沒有ext4支持,所以需要額外添加ext4支持: ~~~ <*> The Extended 4 (ext4) filesystem x x [*] Use ext4 for ext2/ext3 file systems (NEW) x x [*] Ext4 extended attributes (NEW) x x [ ] Ext4 POSIX Access Control Lists (NEW) x x [ ] Ext4 Security Labels (NEW) x x [ ] EXT4 debugging support (NEW) x x [ ] JBD2 (ext4) debugging support (NEW) ~~~ 另外還要加上CONFIG_LBDAF(大文件支持,否則無法掛載文件系統) ~~~ -> Enable the block layer (BLOCK [=y]) [*] Support for large (2TB+) block devices and files ~~~ 再加上CGROUPS支持: ~~~ -> General setup [*] Control Group support ---> ~~~ 如果在文件系統(如debian)中使用了SWAP等特性,則還需要在內核中開啟SWAP。 debian下還需要開啟 FHANDLE 特性,否則會出現以下錯誤 ~~~ A start job is running for dev-ttyS0.device timeout ~~~ 如果需要使用wifi功能,則還需要勾選RTL8723BS的支持(注意需要選擇模塊方式),和AW_RF_PM選項。 以及下節所說的fex修改。 ## uboot啟動BSP內核 使用主線uboot啟動BSP內核,需要修改下啟動腳本,放入BSP內核需要的script.bin配置文件(相當于主線linux的dtb) 修改boot.cmd: ~~~ setenv bootargs console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw setenv bootm_boot_mode sec setenv machid 1029 load mmc 0:1 0x41000000 uImage load mmc 0:1 0x41d00000 script.bin bootm 0x41000000 ~~~ 重新生成boot.scr: `mkimage -C none -A arm -T script -d boot.cmd boot.scr` 將boot.scr放入第一分區。 再配置生成script.bin. 復制一份lichee/tools/pack/chips/sun8iw8p1/configs/tiger-cdr/sys_config.fex 修改其中的攝像頭配置: 首先修改SD卡檢測策略,設置為不檢測,默認插入 `sdc_detmode=3` 使能RTL8723bs無線網卡的話,需要使能mmc1,也設置為不檢測sd卡。 在設置攝像頭型號,csi0是mipi攝像頭,csi1是dvp攝像頭。 這里默認以mipi攝像頭為ov5647, dvp攝像頭為ov2640 為例。 ~~~ ;-------------------------------------------------------------------------------- ;vip (video input port) configuration ;vip_used: 0:disable 1:enable ;vip_mode: 0:sample one interface to one buffer 1:sample two interface to one buffer ;vip_dev_qty: The quantity of devices linked to capture bus ; ;vip_define_sensor_list: If you want use sensor detect function, please set vip_define_sensor_list = 1, and ; verify that file /system/etc/hawkview/sensor_list_cfg.ini is properly configured! ; ;vip_dev(x)_pos: sensor position, "rear" or "front", if vip_define_sensor_list = 1,vip_dev(x)_pos must be configured! ; ;vip_dev(x)_isp_used 0:not use isp 1:use isp ;vip_dev(x)_fmt: 0:yuv 1:bayer raw rgb ;vip_dev(x)_stby_mode: 0:not shut down power at standby 1:shut down power at standby ;vip_dev(x)_vflip: flip in vertical direction 0:disable 1:enable ;vip_dev(x)_hflip: flip in horizontal direction 0:disable 1:enable ;vip_dev(x)_iovdd: camera module io power handle string, pmu power supply ;vip_dev(x)_iovdd_vol: camera module io power voltage, pmu power supply ;vip_dev(x)_avdd: camera module analog power handle string, pmu power supply ;vip_dev(x)_avdd_vol: camera module analog power voltage, pmu power supply ;vip_dev(x)_dvdd: camera module core power handle string, pmu power supply ;vip_dev(x)_dvdd_vol: camera module core power voltage, pmu power supply ;vip_dev(x)_afvdd: camera module vcm power handle string, pmu power supply ;vip_dev(x)_afvdd_vol: camera module vcm power voltage, pmu power supply ;x indicates the index of the devices which are linked to the same capture bus ;fill voltage in uV, e.g. iovdd = 2.8V, vip_devx_iovdd_vol = 2800000 ;fill handle string as below: ;axp22_eldo3 ;axp22_dldo4 ;axp22_eldo2 ;fill handle string "" when not using any pmu power supply ;-------------------------------------------------------------------------------- [csi0] vip_used = 1 vip_mode = 0 vip_dev_qty = 1 vip_define_sensor_list = 0 vip_csi_mck = port:PE20<3><default><default><default> vip_csi_sck = port:PE21<2><default><default><default> vip_csi_sda = port:PE22<2><default><default><default> vip_dev0_mname = "h22_mipi" vip_dev0_pos = "rear" vip_dev0_lane = 1 vip_dev0_twi_id = 0 vip_dev0_twi_addr = 0x60 vip_dev0_isp_used = 1 vip_dev0_fmt = 1 vip_dev0_stby_mode = 0 vip_dev0_vflip = 0 vip_dev0_hflip = 0 vip_dev0_iovdd = "" vip_dev0_iovdd_vol = 3000000 vip_dev0_avdd = "csi-avdd" vip_dev0_avdd_vol = 3000000 vip_dev0_dvdd = "csi-dvdd" vip_dev0_dvdd_vol = 3000000 vip_dev0_afvdd = "" vip_dev0_afvdd_vol = 2800000 vip_dev0_power_en = vip_dev0_reset = port:PG00<1><default><default><default> vip_dev0_pwdn = port:PG01<1><default><default><default> vip_dev0_flash_en = vip_dev0_flash_mode = vip_dev0_af_pwdn = vip_dev0_act_used = 0 vip_dev0_act_name = "dw9714_act" vip_dev0_act_slave = 0x18 vip_dev1_mname = "" vip_dev1_pos = "front" vip_dev1_lane = 1 vip_dev1_twi_id = 0 vip_dev1_twi_addr = vip_dev1_isp_used = 0 vip_dev1_fmt = 1 vip_dev1_stby_mode = 0 vip_dev1_vflip = 0 vip_dev1_hflip = 0 vip_dev1_iovdd = "" vip_dev1_iovdd_vol = 2800000 vip_dev1_avdd = "" vip_dev1_avdd_vol = 2800000 vip_dev1_dvdd = "" vip_dev1_dvdd_vol = 1500000 vip_dev1_afvdd = "" vip_dev1_afvdd_vol = 2800000 vip_dev1_power_en = vip_dev1_reset = vip_dev1_pwdn = vip_dev1_flash_en = ;fill handle string as below: ;axp22_eldo3 ;axp22_dldo4 ;axp22_eldo2 ;fill handle string "" when not using any pmu power supply ;-------------------------------------------------------------------------------- [csi0] vip_used = 1 vip_mode = 0 vip_dev_qty = 1 vip_define_sensor_list = 0 vip_csi_mck = port:PE20<3><default><default><default> vip_csi_sck = port:PE21<2><default><default><default> vip_csi_sda = port:PE22<2><default><default><default> vip_dev0_mname = "h22_mipi" vip_dev0_pos = "rear" vip_dev0_lane = 1 vip_dev0_twi_id = 0 vip_dev0_twi_addr = 0x60 vip_dev0_isp_used = 1 vip_dev0_fmt = 1 vip_dev0_stby_mode = 0 vip_dev0_vflip = 0 vip_dev0_hflip = 0 vip_dev0_iovdd = "" vip_dev0_iovdd_vol = 3000000 vip_dev0_avdd = "csi-avdd" vip_dev0_avdd_vol = 3000000 vip_dev0_dvdd = "csi-dvdd" vip_dev0_dvdd_vol = 3000000 vip_dev0_afvdd = "" vip_dev0_afvdd_vol = 2800000 vip_dev0_power_en = vip_dev0_reset = port:PG00<1><default><default><default> vip_dev0_pwdn = port:PG01<1><default><default><default> vip_dev0_flash_en = vip_dev0_flash_mode = vip_dev0_af_pwdn = vip_dev0_act_used = 0 vip_dev0_act_name = "dw9714_act" vip_dev0_act_slave = 0x18 vip_dev1_mname = "" vip_dev1_pos = "front" vip_dev1_lane = 1 vip_dev1_twi_id = 0 vip_dev1_twi_addr = vip_dev1_isp_used = 0 vip_dev1_fmt = 1 vip_dev1_stby_mode = 0 vip_dev1_vflip = 0 vip_dev1_hflip = 0 vip_dev1_iovdd = "" vip_dev1_iovdd_vol = 2800000 vip_dev1_avdd = "" vip_dev1_avdd_vol = 2800000 vip_dev1_dvdd = "" vip_dev1_dvdd_vol = 1500000 vip_dev1_afvdd = "" vip_dev1_afvdd_vol = 2800000 vip_dev1_power_en = vip_dev1_reset = vip_dev1_pwdn = vip_dev1_flash_en = vip_dev1_flash_mode = vip_dev1_af_pwdn = [csi1] vip_used = 0 vip_mode = 0 vip_dev_qty = 1 vip_define_sensor_list = 0 vip_csi_pck = port:PE00<2><default><default><default> vip_csi_mck = port:PE01<2><default><default><default> vip_csi_hsync = port:PE02<2><default><default><default> vip_csi_vsync = port:PE03<2><default><default><default> vip_csi_d0 = port:PE04<2><default><default><default> vip_csi_d1 = port:PE05<2><default><default><default> vip_csi_d2 = port:PE06<2><default><default><default> vip_csi_d3 = port:PE07<2><default><default><default> vip_csi_d4 = port:PE08<2><default><default><default> vip_csi_d5 = port:PE09<2><default><default><default> vip_csi_d6 = port:PE10<2><default><default><default> vip_csi_d7 = port:PE11<2><default><default><default> vip_csi_d8 = port:PE12<2><default><default><default> ;vip_csi_d9 = port:PE13<2><default><default><default> vip_csi_d10 = port:PE14<2><default><default><default> vip_csi_d11 = port:PE15<2><default><default><default> vip_csi_sck = port:PE21<2><default><default><default> vip_csi_sda = port:PE22<2><default><default><default> vip_dev0_mname = "ov5640" vip_dev0_pos = "front" vip_dev0_twi_id = 4 vip_dev0_twi_addr = 0x78 vip_dev0_isp_used = 0 vip_dev0_fmt = 0 vip_dev0_stby_mode = 0 vip_dev0_vflip = 0 vip_dev0_hflip = 0 vip_dev0_iovdd = "" vip_dev0_iovdd_vol = 2800000 vip_dev0_avdd = "" vip_dev0_avdd_vol = 2800000 vip_dev0_dvdd = "" vip_dev0_dvdd_vol = 1500000 vip_dev0_afvdd = "" vip_dev0_afvdd_vol = 2800000 vip_dev0_power_en = vip_dev0_reset = port:PE23<1><default><default><default> vip_dev0_pwdn = port:PE24<1><default><default><default> vip_dev0_flash_en = vip_dev0_flash_mode = vip_dev0_af_pwdn = vip_dev0_act_used = 0 vip_dev0_act_name = "ad5820_act" vip_dev0_act_slave = 0x18 vip_dev1_mname = "gc2035" vip_dev1_pos = "front" vip_dev1_lane = 1 vip_dev1_twi_id = 4 vip_dev1_twi_addr = 0x78 vip_dev1_isp_used = 0 vip_dev1_fmt = 1 vip_dev1_stby_mode = 0 vip_dev1_vflip = 0 vip_dev1_hflip = 0 vip_dev1_iovdd = "" vip_dev1_iovdd_vol = 2800000 vip_dev1_avdd = "" vip_dev1_avdd_vol = 2800000 vip_dev1_dvdd = "" vip_dev1_dvdd_vol = 1500000 vip_dev1_afvdd = "" vip_dev1_afvdd_vol = 2800000 vip_dev1_power_en = vip_dev1_reset = vip_dev1_pwdn = vip_dev1_flash_en = vip_dev1_flash_mode = vip_dev1_af_pwdn = ~~~ 將其中的攝像頭信息改成自己使用的攝像頭信息。 保存,并使用fex2bin sys_config.fex script.bin 生成script.bin文件。 將script.bin也放入第一分區。 再將前面編譯的uImage放入第一分區。 此時就可以使用主線Uboot啟動bsp內核了。 ## BSP內核使用攝像頭 經過上述操作后,將硬件正確連線,啟動系統后在/dev目錄下可見video0,video1等設備節點,即可使用ffmpeg等軟件進行攝像頭操作。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看