SDK:ti-processor-sdk-linux-omapl138-lcdk-06.01.00.08
镜像:u-boot.ais和zImage基于以上SDK编译生成。
平台:自研omapl138板子,基于omapl138-lcdk设计。
操作:
U-Boot 2019.01-g5bb01f9-dirty (May 19 2020 – 10:52:53 +0800)
Model: DA850/AM1808/OMAP-L138 LCDK
DRAM: 128 MiB
128 MiB
NAND: 512 MiB
MMC: da830-mmc: 0
Loading Environment from NAND… OK
In: serial@10d000
Out: serial@10d000
Err: serial@10d000
Net: DaVinci-EMAC
Hit any key to stop autoboot: 0=>=> printargs_mmc=run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype}
baudrate=115200
boot_fdt=yes
boot_fit=0
bootcmd=run envboot; run mmcboot;
bootdelay=3
bootdir=/boot
bootenvfile=uEnv.txt
bootfile=zImage
bootpart=0:2
bootscript=echo Running bootscript from mmc${mmcdev} …; source ${loadaddr}
console=ttyS2,115200n8
devnum=0
devtype=mmc
envboot=mmc dev ${mmcdev}; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadbootscript; then run bootscript;else if run loadbootenv; then echo Loaded env from ${bootenvfile};run importbootenv;fi;if test -n $uenvcmd; then echo Running uenvcmd …;run uenvcmd;fi;fi;fi;
ethact=DaVinci-EMAC
ethaddr=06:00:a0:3a:df:3a
fdtaddr=0xc0600000
fdtcontroladdr=c7e22460
fdtfile=da850-lcdk.dtb
finduuid=part uuid mmc ${bootpart} uuid
importbootenv=echo Importing environment from mmc${mmcdev} …; env import -t ${loadaddr} ${filesize}
ipaddr=172.16.23.200
loadaddr=0xc0700000
loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}
loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr
loadfdt=load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}
loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}
mmcboot=mmc dev ${mmcdev}; setenv devnum ${mmcdev}; setenv devtype mmc; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadimage; then if test ${boot_fit} -eq 1; then run loadfit; else run mmcloados;fi;fi;fi;
mmcdev=0
mmcloados=run args_mmc; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then bootz ${loadaddr} – ${fdtaddr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;
mmcrootfstype=ext4 rootwait
nandboot=setenv bootargs console=/dev/ttyS2,115200n8 root=/dev/ubi0_0 rw rootfstype=ubifs;bootz $loadaddr – $fdtaddr
scriptaddr=0xc0600000
serverip=172.16.23.37
stderr=serial@10d000
stdin=serial@10d000
stdout=serial@10d000
ver=U-Boot 2019.01-g5bb01f9-dirty (May 19 2020 – 10:52:53 +0800)
Environment size: 2025/65532 bytes
=> tftp $fdtaddr $fdtfile
Using DaVinci-EMAC device
TFTP from server 172.16.23.37; our IP address is 172.16.23.200
Filename 'da850-lcdk.dtb'.
Load address: 0xc0600000
Loading: ##
693.4 KiB/s
done
Bytes transferred = 19902 (4dbe hex)
=> tftp $loadaddr $bootfile
Using DaVinci-EMAC device
TFTP from server 172.16.23.37; our IP address is 172.16.23.200
Filename 'zImage'.
Load address: 0xc0700000
Loading: #################################################################
#################################################################
#################################################################
####################################
1.4 MiB/s
done
Bytes transferred = 3380312 (339458 hex)
=> run nandboot
## Flattened Device Tree blob at c0600000
Booting using the fdt blob at 0xc0600000
Loading Device Tree to c7e19000, end c7e20dbd … OK
Starting kernel …
hello world:3966, -941518848
说明:
环境变量nandboot是自己添加的,dtb和zImage下载地址都是u-boot环境变量中默认的。hello world:3966, -941518848 是自己打印的u-boot/arch/arm/lib/bootm.c 中static void boot_jump_linux(bootm_headers_t *images, int flag){}函数中 kernel_entry(0, machid, r2);的后2个参数,
printf("%d, %ld\n", machid, r2); 也就是u-boot给内核传递的2个参数,分别是机器码、tag地址。
r2的值感觉不对,但是我不明白这个不应该是TI已经弄好的u-boot么,现在我也不知道怎么改,另外
Omapl138_lcdk.h (include\configs) 221行也定义了#define LINUX_BOOT_PARAM_ADDR (PHYS_SDRAM_1 + 0x100) 这些参数的地址。。。
现在我不知道哪里出了问题,要怎么改,麻烦TI大神帮忙分析下。
李大闲:
linux内核我看了下,应该就是用的ttyS2作为调试口的。
Nancy Wang:
回复 李大闲:
请问自制板也是默认用的uart2是吗?自制板是完全参考omapl138-lcdk来设计的是吗?
停在Starting kernel …一般来说都是串口的不匹配。
processors.wiki.ti.com/…/FAQ_for_DaVinci_Linux
李大闲:
回复 Nancy Wang:
确定是UART2啊
Nancy Wang:
回复 李大闲:
我去咨询一下相关工程师,再给您回复。
李大闲:
回复 Nancy Wang:
好的好的。
Nancy Wang:
回复 李大闲:
具体是哪部分呢?方便分享一下吗?
李大闲:
回复 Nancy Wang:
u-boot 调用kernel_entry(0, machid, r2);启动linux的时候,要向linux传递3个参数,第二个参数就是机器ID,这个值需要和linux板级文件中指定的ID一样,linux可以查看 arch/arm/tools/mach-types确定自己板子用的ID。第三个参数是bootargs地址。
u-boot各种设置之后这3个参数都不是实际的参数,所以直接把参数改为实际值就行了。
不过我记得以前linux即使这个ID不匹配,也会有打印,这里如果不匹配一点打印都没有,可能是linux新版本的原因,也有可能是我记错了。