大家新年好,
我用的是am335x平台、sdk8.0, 我想把sd卡里的uboot、内核镜像、根文件系统 烧录到emmc(64g)里面,让我的板子脱离sd卡也能启动系统。
请问我应该怎么做呢?有没有这方面的参考资料呢?
Steven Liu1:
可以参考这个emmc烧写全纪录:http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/73278.aspx
这个里面是用的uniflash,如果你想用SD卡烧录,参考这里面的步骤即可。
Dendi:
回复 Steven Liu1:
你好,我板子的emmc是连在mmc1上的,用的是sdk8.0,uboot在启动的时候我修改i2c读取板子ID为sk板,也就是用sk的配置,好像sk板子没有emmc吧,我在uboot里面没有改过任何关于emmc管脚之类的东西,然后在uboot环境中打印了如下信息,这是不是代表我的emmc已经驱动起来了?关于sk板的uboot,应该没有启动这方面的驱动才对吧,为什么能读到我板子emmc的信息呢?
U-Boot# mmcinfoDevice: OMAP SD/MMCManufacturer ID: feOEM: 14eName: MMC64 Tran Speed: 52000000Rd Block Len: 512MMC version 4.41High Capacity: YesCapacity: 59.5 GiBBus Width: 4-bitU-Boot#
Steven Liu1:
回复 Dendi:
我们的BBB板子上面是有EMMC卡的,接在MMC1上。SK上没有。
我估计你还是在板级配置的时候配置了,所以会有。你可以查下pinmux来确认配置。
如果为了移植,就参考beagleboneblack的配置中是如何进行配置的即可。
Dendi:
回复 Steven Liu1:
我确认我修改sdk时只改了i2c读取板子ID的内容(选择sk板),其他没改过,就是它能识别emmc让我很疑惑!
请问你说的pinmux具体是查看哪个文件呢?这些引脚的配置区分sk板和BBB板的么?
还有,我用的是sdk08,参照sdk06的烧录emmc方法,需要注意什么呢?
感谢!
Steven Liu1:
回复 Dendi:
AM335x的PIN脚是有复用模式设置的,要想正常的进行访问,首先管脚的状态设置必须要正确,才能收发信号。参考AM335x的TRM手册,在control module的章节列出了他的地址,你可以通过这个来确认,你是不是配置了。(一般来说,除了功能管脚,多数的管脚模式都会被配置成为模式7,GPIO模式。)
你现在的eMMC能正常识别了的话,是否能正常的写入读取数据呢?试试看。
我建议的思路还是,查源码中BBB的配置是如何进行的,参考这个来,这样是最直观便捷的方式。
Dendi:
回复 Steven Liu1:
我看了board/ti/am335x/mux.c
void enable_board_pin_mux(struct am335x_baseboard_id *header) 函数了面,
else if (board_is_evm_sk(header)) { /* Starter Kit EVM */ configure_module_pin_mux(i2c1_pin_mux); configure_module_pin_mux(gpio0_7_pin_mux); configure_module_pin_mux(rgmii1_pin_mux); configure_module_pin_mux(rgmii2_pin_mux); configure_module_pin_mux(mmc0_pin_mux_sk_evm); }
确实没有configure_module_pin_mux(mmc1_pin_mux);
我板子启动确实是用的sk的配置:[ 0.000000] Machine model: TI AM335x EVM-SK
很是疑惑。
Dendi:
回复 Steven Liu1:
嗯嗯,请问如何验证emmc的写入读取数据呢?使用什么命令呢?
刚接触这个,还是小白,希望多多指教。
感谢!
Dendi:
回复 Steven Liu1:
我改了PIN脚配置,未格式化前如下:
U-Boot# mmc infoDevice: OMAP SD/MMCManufacturer ID: 3OEM: 5344Name: SU04G Tran Speed: 50000000Rd Block Len: 512SD version 3.0High Capacity: YesCapacity: 3.7 GiBBus Width: 4-bit
格式化后:
U-Boot# mmc dev 1switch to partitions #0, OKmmc1(part 0) is current deviceU-Boot# mmc erase 0 20000
MMC erase: dev # 1, block # 0, count 131072 … 131072 blocks erased: OKU-Boot# mmcinfo Device: OMAP SD/MMCManufacturer ID: feOEM: 14eName: MMC64 Tran Speed: 52000000Rd Block Len: 512MMC version 4.41High Capacity: YesCapacity: 59.5 GiBBus Width: 4-bit
执行读写命令:
U-Boot# mmc write 0x90000000 0x600 0x10
MMC write: dev # 1, block # 1536, count 16 … 16 blocks written: OKU-Boot# mmc read 0x90000000 0x600 0x10
MMC read: dev # 1, block # 1536, count 16 … 16 blocks read: OK
问题1:这个打印信息证明我的EMMC成功驱动了么?
问题2:格式化前感觉读到的是sd卡的信息,为什么格式化前和格式化后EMMC的信息不同的?(执行mmcinfo命令)
问题3:sdk08和sdk6.0的EMMC烧录步骤有哪些区别?
Steven Liu1:
回复 Dendi:
1. 从操作上看,是进行读写了,但是读写的数据对不对这样无法辨识不知道。你直接把MLO写进去,然后就用mmc1启动,看是否能读到,启动成功就好了。
2. 只能说明之前没配置,读写这里应该是有问题的。其他的说明不了啥。如果想进一步确认,那一次读的对,查看你的eMMC卡的Manufacutre ID可以帮助你来辨识。
3. SDK 6.0在上面的链接中给出了,SDK8.0的目前还没有客户做过,不过流程上应该一致。PROCESSOR SDK的话,可以参考下面:
http://processors.wiki.ti.com/index.php/Sitara_Linux_Program_the_eMMC_on_Beaglebone_Black?keyMatch=AM335x%20emmc&tisearch=Search-EN