1.UBOOT编译:
编译脚本如下:
编译配置文件为arm-himix100-linux- hi3559v200_config,编译时会直接拷贝到.config文件
1 #! /bin/bash 2 cd u-boot-2016.11 3 #make ARCH=arm CROSS_COMPILE=arm-himix100-linux- hi3559v200_config 4 make ARCH=arm CROSS_COMPILE=arm-himix100-linux- 5 make ARCH=arm CROSS_COMPILE=arm-himix100-linux- -j 20 6 #nautilus . 7 if [ $? -ne 0 ]; then 8 echo "fail" 9 else 10 #以下为制作可烧录使用的uboot.bin文件 11 echo "compile uboot finish--------" 12 echo "make uboot_burn start--------" 13 make ARCH=arm CROSS_COMPILE=arm-himix100-linux- u-boot-z.bin 14 echo "make uboot_burn finish--------" 15 cp u-boot-hi3559v200.bin /mnt/hgfs/HI3556V200/burn/spinor 16 fi
编译完成,之后可以直接HITOOL工具烧录。
遇到问题:
A. uboot下识别不到SD卡问题。
修改如下:
vim u-boot-2016.11/board/hisilicon/hi3559v200/hi3559v200.c +493
his的mmc注册函数,所写的基地址不为SDIO0地址,所以识别不到sdio0的SD卡。
弃用auto_update检测,这里需要检测GPIO_0_0的状态,来识别是否裸机烧录。我们的板子没有单独设计强烧录,弃用。
打开SDIO_0的注册函数,可以正常识别到SD卡。Dev_num = 0 ; 设备号为0。
B. Uboot下GPIO的配置问题:
单板的LED灯GPIO脚位为:PIN_D19 ,查文档海思3559V200Pin脚复用表,D19 复用为GPIO7_1
查文档:
关于GPIO的介绍,查到基地址,0x120d7000,方向寄存器偏移地址,DATA数据地址。
最终配置如下:
1 #define REG_BASE_GPIO7 0x120d7000 //GPIO7组列的寄存器地址 2 #define GPIO7_1_DATA_OFST 0x008 //GPIO_DATA寄存器偏移地址 3 // 注意:0b11 1111 1100 表示[0-7] 全部有效,写入DATA值将使8位GPIO均有效 4 // 0b00 0000 1000 则表示GPIOX_1 有效。 5 #define GPIO7_DIR_OFST 0x400 //GPIO方向寄存器偏移值 6 #define LED_INIT { writel(0x0400,0x112f0048); writel(0x02,REG_BASE_GPIO7 + GPIO7_DIR_OFST); } 7 #define LED_ON writel(0x02,REG_BASE_GPIO7 + GPIO7_1_DATA_OFST) 8 #define LED_OFF writel(0x00,REG_BASE_GPIO7 + GPIO7_1_DATA_OFST)
注意: writel();写寄存器值,val为参数1 , address 为参数2 。
DATA_OFST 寄存器的写入值,要对应配置的GPIO号。0x00-0xff 对应[GPIO_0--7];