在uboot环境变量里面需要设置内核和设备树的加载地址,使用
boot.scr
可以直接传递这些参数。
boot.scr
是由boot.cmd
使用mkimage
工具生成的。mkimage
工具在uboot/tools
文件夹下boot.scr
放在TF卡第一分区。系统读取
script.bin
文件解析配置的工作参数和方式。
sys_config.fex
文件定义了各种参数来配置SOC工作状态或方式。
sys_config.fex
文件配置GPIOPIN 脚的输入,输出模式或电平的高低,配置DRAM工作状态,配置显示输出模式等等。用户通过修改此文件来达到快速定制系统的目的。fex2bin
是将文本fex文件转为二进制bin文件的工具。
bin2fex
是将二进制bin文件转为文本fex文件的工具。
工具在sunxi-tools
里面,参考:全志sunxi-tools烧录工具安装和使用script.bin
是由sys_config.fex
使用fex2bin
工具生成的。script.bin
放在TF卡第一分区。- 如何修改script.bin/script.fex、使script.bin文件配置生效的驱动
boot-bsp.cmd
(bsp内核)
# 在uboot根目录下新建
vim boot-bsp.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
# 第一行setenv命令,设定了变量bootargs(启动参数)为:通过tty0和ttyS0串口输出启动信息;启动失败延迟5秒重启,根文件在TF卡的第二分区,可读写;
# 第二行指定了bootm 模式
# 第三行指定解析设备树
# 第四行指定了将压缩后的内核uImage加载到 0x41000000 的位置
# 第五行指定了将 script.bin 加载到 0x41d00000 的位置
# 第六行为从加载地址启动内核的命令
boot.cmd
(主线Linux)
# 在uboot根目录下新建
vim boot.cmd
# 写入以下内容
setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10 earlyprintk rw
load mmc 0:1 0x41000000 zImage
load mmc 0:1 0x41800000 sun8i-v3s-licheepi-zero.dtb
bootz 0x41000000 - 0x41800000
# 480x272 LCD
setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10 earlyprintk rw
setenv video-mode sunxi:480x272-18@60,monitor=lcd
setenv lcd-mode x:480,y:272,depth:18,pclk_khz:10000,le:42,ri:8,up:11,lo:4,hs:1,vs:1,sync:3,vmode:0
setenv stderr serial,lcd
setenv stdout serial,lcd
load mmc 0:1 0x41000000 zImage
load mmc 0:1 0x41800000 sun8i-v3s-licheepi-zero-with-480x272-lcd.dtb
bootz 0x41000000 - 0x41800000
mkimage
# 该工具在`uboot/tools`文件夹下
# 在uboot根目录下输入以下命令拷贝到用户文件夹下,方便以后可以直接使用
sudo cp ./tools/mkimage /usr/local/bin/mkimage
boot.scr
# 使用以下命令生成`boot.scr`,然后将其放入第一分区
mkimage -C none -A arm -T script -d boot-bsp.cmd boot.scr
sys_config.fex
配置文件下载,密码:95mp
修改分辨率:800x480
修改为480x272
[ctp_para]
ctp_used = 1
ctp_name = "gt911_m785q6"
ctp_twi_id = 0
ctp_twi_addr = 0x48
ctp_screen_max_x = 480
ctp_screen_max_y = 272
ctp_revert_x_flag = 0
ctp_revert_y_flag = 0
ctp_exchange_x_y_flag = 1
[lcd0_para]
lcd_used = 1
lcd_driver_name = "default_lcd"
lcd_if = 0
lcd_x = 480
lcd_y = 272
lcd_width =
lcd_height =
lcd_dclk_freq = 1
lcd_pwm_used = 1
lcd_pwm_ch = 0
lcd_pwm_freq = 50000
lcd_pwm_pol = 1
lcd_hbp = 46
lcd_ht = 1055
lcd_hspw = 0
lcd_vbp = 23
lcd_vt = 525
lcd_vspw = 5
lcd_lvds_if = 0
lcd_lvds_colordepth = 0
lcd_lvds_mode = 0
lcd_frm = 1
lcd_io_phase = 0x0100
lcd_gamma_en = 0
lcd_bright_curve_en = 0
lcd_cmap_en = 0
deu_mode = 0
lcdgamma4iep = 22
smart_color = 90
script.bin
# 使用以下命令生成`script.bin`,然后将其放入第一分区
fex2bin sys_config.fex > script.bin