飛凡Hi3536內核編譯與燒寫

開發平臺:飛凡嵌入式Hi3536

         開發板採用SPI NORFlash啓動,默認內核不支持USB攝像頭工作,需重新編譯內核,並燒寫系統。

         一、編譯內核

         採用Hisi官方提供的SDK中內核linux-3.10.y,配置文件爲hi3536_full_A17_slave_defconfig。主要流程:

         #cd /opt/hi3536/Hi3536_SDK_V2.0.2.0/osdrv/opensource/kernel/linux-3.10.y

         #cp arch/arm/configs//hi3536_full_A17_slave_defconfig .config

         #make ARCH=arm CROSS_COMPILE=arm-hisiv400-linux- menuconfig

   由於對Linux驅動架構不熟悉,也不能確定所使用USB攝像頭的屬類,這裏將所有V4L2相關驅動全部選上,在menuconfig 搜索V4L2將所有的選爲Y,注意依賴項的選擇,如果依賴關係不正確的,menuconfig會提示。


保存、退出得到所需要的配置文件,然後編譯內核

         #make ARCH=arm CROSS_COMPILE=arm-hisiv400-linux- uImage

二、燒寫系統

       

1、參數配置

         配置tftp服務器

    #可以使用任意的tftp服務器,將相關文件拷貝到tftp服務器目錄下;

    #單板上電後,敲任意鍵進入u-boot。設置serverip(即tftp服務器的ip)、ipaddr(單板ip)和ethaddr(單板的MAC地址)。

   setenv serverip xx.xx.xx.xx

   setenv ipaddr xx.xx.xx.xx

   setenv ethaddr xx:xx:xx:xx:xx:xx

   setenv netmask xx.xx.xx.xx

   setenv gatewayip xx.xx.xx.xx

   ping serverip,確保網絡暢通。

2、根據系統硬件的配置,選擇合適的燒寫方案。我的開發辦爲SPI NOR啓動,採用的是“燒寫雙主控(SPIBOOT_NAND256M).txt”,注意的是由於我編譯出的內核大於了4M,按照原本的文件內核空間是沒有4M的,是沒有辦法燒寫的,所以要做修改。修改後文件如下:
*****************************************************************************
燒寫雙主控(SPIBOOT_NAND256M).txt
*****************************************************************************
燒寫Glibc映像文件到SPI Flash

1)地址空間說明(其中,m表示master arm;s表示slave arm)
|      1M       |      6M       |      12M      |      1M       |      4M       |      6M       |
|---------------|---------------|---------------|---------------|---------------|---------------|
|     boot(m)   |     kernel(m) |     empty(m)  |     boot(s)   |     kernel(s) |     rootfs(s) |

以下的操作均基於圖示的地址空間分配,您也可以根據實際情況進行調整。

2)燒寫主u-boot
mw.b 0x42000000 0xff 0x100000
tftp 0x42000000 osdrv_master/image_glibc/u-boot-hi3536.bin
sf probe 0
sf erase 0x0 0x100000
sf write 0x42000000 0x0 0x100000
reset

3)燒寫主內核
mw.b 0x42000000 0xff 0x600000
tftp 0x42000000 osdrv_master/image_glibc/uImage_hi3536
sf probe 0
sf erase 0x100000 0x600000
sf write 0x42000000 0x100000 0x600000

4)擦除空白,主文件系統放nand上
sf probe 0
sf erase 0x700000 0xc00000

5)燒寫從u-boot
mw.b 0x42000000 0xff 0x100000
tftp 0x42000000 osdrv_slave/image_glibc/u-boot-hi3536.bin
sf probe 0
sf erase 0x1300000 0x100000
sf write 0x42000000 0x1300000 0x100000

6)燒寫從內核
mw.b 0x42000000 0xff 0x400000
tftp 0x42000000 osdrv_slave/image_glibc/uImage_hi3536
sf probe 0
sf erase 0x1400000 0x400000
sf write 0x42000000 0x1400000 0x400000

7)燒寫從文件系統
mw.b 0x42000000 0xff 0x600000
tftp 0x42000000 osdrv_slave/image_glibc/rootfs-SLV_FULL_REL.cramfs.initrd.img
sf probe 0
sf erase 0x1800000 0x600000
sf write 0x42000000 0x1800000 0x600000

8)燒寫主文件系統
mw.b 0x42000000 0xff 0x7000000
tftp 0x42000000 osdrv_master/image_glibc/rootfs_hi3536_2k_4bit_spiboot.yaffs2
nand erase;nand write.yaffs 0x42000000 0x0 0x661b180;(實際的文件系統大小)

9)設置啓動參數
setenv bootargs 'mem=128M console=ttyAMA0,115200 root=/dev/mtdblock3 rootfstype=yaffs2 mtdparts=hi_sfc:1M(boot),6M(kernel),12M(norflash);hinand,256M(rootfs)'
setenv bootcmd 'sf probe 0;sf read 0x42000000 0x100000 0x600000;bootm 0x42000000'
setenv slave_autostart 1
setenv slave_bootcmd 'sf probe 0;sf read 0x81000000 0x1300000 0x80000;sf read 0x82000000 0x1400000 0x400000;sf read 0x83000000 0x1800000 0x600000;bootm 0x81000000 0x82000000 0x83000000'
setenv slave_bootargs 'mem=96M console=ttyAMA0,115200'
sa

    之後重啓,插入USB攝像頭,會看到生成的 /dev/video0設備文件。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章