A33开发板买的这一家: https://item.taobao.com/item.htm?spm=a1z09.2.0.0.16a02e8dC4lcxZ&id=589094110822&_u=uc9cub3400
是4GB eMMC, 512MB内存的配置。
uboot直接用的主线最新2020.1版本,defconfig用的是Sinlinx_SinA33_defconfig
生成的u-boot-sunxi-with-spl.bin用sunxi-fel的uboot命令可以跑起来:
sunxi-fel uboot u-boot-sunxi-with-spl.bin
主线uboot驱动很完善,LCD console直接跑起来,而且支持USB Mass Storage 和Gadget等
->mmc list
mmc@01c0f000: 0 (SD)
mmc@01c11000: 1 (eMMC)
然后敲入ums命令【需在menuconfig中选上UMS命令】
ums 2 mmc 1
即可把 eMMC 设置成 USB Mass Storage设备(PC上识别为/dev/sdb)
但是接下来把uboot烧到8k地址不起作用,不能启动。我的命令是:
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8
没有串口打印,但屏幕也无显示,不过背光能亮起来,感觉还是有什么程序跑起来的样子,只是中断了
参考文档:
https://www.olimex.com/wiki/ArmbianHowTo#Update_SD.2FeMMC_card
离线
这个的默认串口是哪一组,骚到zksw的板子不知道能不能跑,他用的是 spi nor flash
这个默认用的PB2那个串口,我也是搞了好久才搞清楚,在我板子上是uart2
而且spl用的是PF的那个串口0,和uboot不一样。
你的板子得自己试一下了
离线
SPL用的串口和uboot用得不一样。
uboot的dts可以看到:
uart0_pins_b: uart0@1 {
pins = "PB0", "PB1";
function = "uart0";
};
所以你要查查这个串口
而且uboot里有个选项,可以选TF卡上的那个uart0,你可以试一下
离线
这个我知道,你得先去把emmc的boot0下的spl清空,除非你换个新片子,当时浪费了好多时间。(手动滑稽)
还有emmc和nand都可以正常启动的
太谢谢了,emmc确实原来烧过全志的SDK镜像。但我把emmc作为USB Mass Storage Gadget连到PC然后重新分区了,为什么还会有这个现象?这个boot0的SPL在什么位置?
离线
查了一下,boot0似乎就是8KB位置,我的u-boot-sunxi-with-spl也是写的这个位置,难道不会覆盖吗?
https://blog.csdn.net/weixin_43094346/article/details/82563873
一. Boot0 固件更新:(通常boot0 不需要更新)
命令:dd if=boot0_sdcard.fex of=/dev/block/mmcblk0 bs=512 count=S1 seek=S2
备注1: boot0_sdcard.fex 是boot0_sdcard_sun8iw5p1.bin 在pack 命令之后产生
备注2: S1=32K/512 S2= BOOT0_SDMMC_START_ADDR
离线
神奇的发现,无论我覆盖写多少次,甚至重新分区,原来的BSP Linux的boot0,uboot甚至Linux都还在
emmc分区后确实起效了,重启也识别分区正常。但是原来的BSP boot0和uboot为什么还能正常工作呢,太奇怪了
离线
谢谢晕哥以及楼上几位,我终于搞明白了。原来emmc有芯片级的boot,RPMB,GPP,UDA等分区,是正常情况下不可见的(或者选择其中一个)。我们平常访问和创建文件系统的是UDA分区。我板子上默认使能的是boot0分区启动,所以我无论怎么烧写uboot,其实都是烧到UDA分区,下次上电还是从boot0分区启动老的uboot。
参考:
https://www.cnblogs.com/helloworldtoyou/p/6053460.html?utm_source=itdadao&utm_medium=referral
https://www.cnblogs.com/arnoldlu/p/10762009.html
解决方法:
打开uboot的CONFIG_SUPPORT_EMMC_BOOT
在uboot设置从UDA(7)启动
mmc partconf 1 0 7 0
现在终于可以正常从emmc启动uboot了
U-Boot SPL 2020.01-dirty (Feb 03 2020 - 00:42:31 +0800)
DRAM: 512 MiB
Trying to boot from MMC2
U-Boot 2020.01-dirty (Feb 03 2020 - 00:42:31 +0800) Allwinner Technology
CPU: Allwinner A33 (SUN8I 1667)
Model: Sinlinx SinA33
DRAM: 512 MiB
MMC: mmc@1c0f000: 0, mmc@1c11000: 1
Loading Environment from FAT... OK
Setting up a 1024x600 lcd console (overscan 0x0)
In: serial
Out: vga
Err: vga
Allwinner mUSB OTG (Peripheral)
Net: eth0: usb_ether
Hit any key to stop autoboot: 0
离线
楼主你好,我买的根你一样的A33的板子,可是执行ums 2 mmc 1 的时候,出现
g_dnl_register: failed!, error: -6
g_dnl_register:failed的错误,pc上也没有出现U盘符,我用的u-boot版本是2020.04, DTS 用的是Sinlunx_A33_defconfig,
是不是那里还需要特别设定一下,我插入的是板子上的otg USB插口
这个2取决于你的USB口,所以你可以试试其它的口
离线
好了,ums可以用了
咋弄好的?
离线
bananapro login: root
Password:
# [ 32.484107] vcc3v0: disabling
[ 32.487196] vcc3v3: disabling
[ 32.490567] dc1sw: disabling登录经来不久,突然出现这个,然后屏幕就关闭了,不知道是背光关闭了还是屏幕整个都断电了
估计是设备树中的设定跟实际板子不一致
你的问题我都遇到过,我也试了好久,终于看到另外一个厂家dts是有定义dc1sw,于是我参考定义了一下
®_dc1sw {
regulator-always-on;
regulator-name = "vcc-lcd";
};
然后就正常了
离线
楼上可能需要换个sunxifei的版本,你是不是用的f1c100的
离线
请教下怎么sunxi-fel看版本啊?我直接就是git clone https://github.com/linux-sunxi/sunxi-tools 然后make的
我好像也是这个
离线
楼主,我按照这个克隆uboot “git clone https://github.com/linux-sunxi/u-boot-sunxi u-boot-sunxi” 编译后可以用sunxi-fel启动正常了
主线uboot,我是直接ftp://ftp.denx.de/pub/u-boot/ 这个网站下面下载 u-boot-2020.04-rc3.tar.bz2,然后步骤是
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make Sinlinx_SinA33_defconfig
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make
不知道这样编译是不是有问题,还是编译前还需要做什么?
对,我也是这么操作
离线