V3S Uboot 编译

1、安装交叉编译器

wget https://releases.linaro.org/components/toolchain/binaries/latest/arm-linux-gnueabihf/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz
tar xvf gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz
mv gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf /opt/
vim /etc/bash.bashrc
# add: PATH="$PATH:/opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin"
source /etc/bash.bashrc
arm-linux-gnueabihf-gcc -v
sudo apt-get install device-tree-compiler

2、下载编译Uboot

git clone https://github.com/Lichee-Pi/u-boot.git -b v3s-current
#or git clone https://github.com/Lichee-Pi/u-boot.git -b v3s-spi-experimental
cd u-boot
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero_800x480LCD_defconfig
#or make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero480x272LCD_defconfig
#or make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero_defconfig
make ARCH=arm menuconfig

3、修改Uboot传参

修改 include/configs/sun8i.h

#define CONFIG_BOOTARGS        "console=ttyS0,115200 panic=5 rootwait mtdparts=spi32766.0:1M(uboot)ro,64k(dtb)ro,6M(kernel)ro,-(rootfs) root=/dev/mmcblk0p2 earlyprintk rw"

#define CONFIG_BOOTCOMMAND \
    "setenv bootm_boot_mode sec; " \
    "load mmc 0:1 0x41000000 zImage; " \
    "load mmc 0:1 0x41800000 sun8i-v3s-licheepi-zero-dock.dtb;" \
    "bootz 0x41000000 - 0x41800000; "

4、编译Uboot

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8

5、SD卡烧入
烧入到8k偏移处。

sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8
### 关于全志 V3S 平台移植 U-Boot 的教程 #### 准备工作 为了成功完成 U-Boot 移植,需准备必要的开发工具链以及硬件设备。确保拥有交叉编译、调试工具(如 JTAG)、目标板及其文档。 #### 获取源码并配置环境 从官方仓库获取最新版本的 U-Boot 源代码,并解压至本地目录。接着安装依赖项和构建所需的软件包,创建适合 ARM 架构的工作空间[^1]。 ```bash git clone https://github.com/u-boot/u-boot.git cd u-boot/ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- ``` #### 配置与定制化 针对 Allwinner V3S 特定需求调整配置选项,这通常涉及修改 `configs/` 文件夹下的相应 `.config` 文件来匹配 SoC 和外设特性。同时可能还需要编辑一些驱动程序以支持特定功能模块。 #### 编辑自启动命令序列 通过设置 bootcmd 环境变量定义一系列指令用于引导加载过程中的自动化处理;这些指令之间应使用分号隔开以便依次执行[^2]: ```bash setenv bootcmd 'mmc dev 0; ext4load mmc 0:1 0x48000000 /boot/zImage; bootm' saveenv ``` 上述例子展示了如何读取 SD 卡上的 Linux 内核映像文件并通过内存地址传递给 BootM 命令来进行系统启动。 #### 编译与烧录 利用 Makefile 进行编译生成最终二进制镜像文件后,借助编程或者其他方式将其写入到嵌入式系统的存储介质中去。 #### 测试验证 上电重启测试新刷写的固件能否正常运行,观察串口输出日志确认整个流程无误直至进入操作系统界面为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yfw&武

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值