本文相关资源已上传github:
uboot源码:https://github.com/maxlicheng/ralink_uboot.git
uboot补丁:https://github.com/maxlicheng/uboot_patch.git
因HLK-RM04开发板自带uboot不能正常选择uboot菜单,即使编译官方原版uboot也无法选择:
正常来说,uboot运行到这一步是可以通过输入对应的数字进入对应的功能的;经过深入测试,由于系统版本的原因,还有串口中断的差异性(可能是usb转串口电路或者是usb转串口驱动程序),使得uboot运行到uboot菜单这一步,自动接收到了一个空字节(Null),导致uboot跳过倒计时,进入3: Boot system code via Flash (default)这个选项,直接进入系统。
为了处理这个问题,博主直接修改了uboot源码(BootLoader),加入了功能组合按键作为判断机制,使它即使收到空字节,也不会直接进入系统,从而可以输入对应数字选择uboot菜单对应选项。
注:uboot的编译只能在32位Linux系统中编译,64位编译会报错。
检查系统相关工具包是否齐全
sudo apt-get install git g++ make libncurses5-dev subversion libssl-dev gawk libxml-parser-perl unzip wget python xz-utils vim
因uboot编译时的gcc版本不能高于3.5.2,需要重新安装gcc.
查看当前gcc版
mipsel-linux-gcc -v
高于3.5.2版本,执行下面命令,下载3.4.2版本
wget https://github.com/maxlicheng/ralink_uboot/releases/download/V1.0/buildroot-gcc342.tar.bz2
将3.4.2gcc解压到指定目录
sudo tar -jvxf buildroot-gcc342.tar.bz2 -C /opt
并添加环境变量
sudo vi ~/.profile
文本内容
PATH=$PATH:/opt/buildroot-gcc342/bin
运行命令,生效
source ~/.profile
或
重启
sudo reboot
查看gcc版本
mipsel-linux-gcc -v
下载官方 uboot 源码
git clone https://github.com/maxlicheng/ralink_uboot.git
进入ralink_uboot目标
修改config.mk文件
将config.mk中第762行gcc版本改为3.4.2 gcc路径
CONFIG_CROSS_COMPILER_PATH= /opt/buildroot-gcc342/bin
下载补丁文件
git clone https://github.com/maxlicheng/uboot_patch.git
执行补丁
patch -p1 < ralink_uboot_mips_4320.patch
完成后
make menuconfig
执行make进行编译
make
编译成功后,移除原来的uboot.bin
rm -rf uboot.bin
将uboot.img改为.bin
cp uboot.img uboot.bin
将uboot通过SPI FLASH烧写器写入开发板flash,启动后的效果如下。
按两次ctrl+c 停止倒计时,即可进入uboot菜单进行选择。
如果文章对您有帮助,欢迎移至上方按钮打赏博主;
老哥,能不能把n1的酸酸乳puls的ipk发一下我,还有这个固件要怎么搞才能支持ipv6呢?
不知道有没有回复你,这里再回一下,固件发出有一段时间了,n1最近没有编译,没有ipk。ipv6自己也不太懂,到恩山开贴问问。
想问问你,那个spiflash的引脚是哪几根?