最近在研究A33主线相关的资源,目前主线uboot和内核都对A33有极好的支持了,所以现在把我在使用过程中遇到的问题和使用方法做个记录,首先是下载主线uboot源码,网址为https://ftp.denx.de/pub/u-boot/,我下载的版本为2022.10版本的,如下图所示

下载完成后,直接解压到我们的开发机器上即可,我这里默认使用的是Sinlinx_SinA33_defconfig配置文件,将此文件复制为我们的配置文件名字即可。
然后配置好交叉编译环境,使用如下命令进行编译即可。
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- Sinlinx_SinA33_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8
编译没问题后如下图文件即为我们所需要的文件
接着需要确保怎么让机器能运行uboot代码,首先是要执行git clone https://github.com/linux-sunxi/sunxi-tools 去下载sunxi-tools工具,下载完成后直接进入目录进行make即可得到工具,然后将机器进入到fel模式,机器识别到Allwinner USB Devices即可进行烧录工作,./sunxi-tools/sunxi-fel uboot u-boot/u-boot-sunxi-with-spl.bin即可,成功运行uboot截图如下。

补上一张烧录的截图,记得一定要sudo权限,或者root用户下执行,不然会提示权限问题。

接下来就是调试uboot外设了,首先会一直打印如下图所示的信息,挺烦人的,而我们又用不到usb启动,所以接下来看看在哪里可以关闭如下操作。

修改如下地方即可,只保留EMMC启动方式。
diff --git a/u-boot/include/configs/sunxi-common.h b/u-boot/include/configs/sunxi-common.h
index 0f0ef4f64..0def14927 100644
--- a/u-boot/include/configs/sunxi-common.h
+++ b/u-boot/include/configs/sunxi-common.h
@@ -266,11 +266,7 @@
#define BOOT_TARGET_DEVICES(func) \
func(FEL, fel, na) \
- BOOT_TARGET_DEVICES_MMC(func) \
- BOOT_TARGET_DEVICES_SCSI(func) \
- BOOT_TARGET_DEVICES_USB(func) \
- BOOT_TARGET_DEVICES_PXE(func) \
- BOOT_TARGET_DEVICES_DHCP(func)
+ BOOT_TARGET_DEVICES_MMC(func)
#ifdef CONFIG_OLD_SUNXI_KERNEL_COMPAT
#define BOOTCMD_SUNXI_COMPAT \
接着我们调试下以太网,因为我们需要使用以太网来进行内核的调试,我这个A33使用的USB以太网模块为RTL8152模块,我这边是有个IO控制电压的,加上电压控制管脚即可,但是还是ping不通,这时候看下是不是电脑防火墙设置了,我这边是因为防火墙的问题,用的win11,照着如下图的设置就好了。


ping通的截图如下

这样以太网就算是可以使用了。接下来就可以使用tftp去启动内核试试了。
使用如下命令去使用tftp启动内核
tftp 0x46000000 zImage
tftp 0x49000000 sun8i-a33-sinlinx-sina33.dtb
bootz 0x46000000 - 0x49000000
指令运行结果如下图。到此uboot使用就介绍完成了。

附上内核启动的截图

这里内核没有设置根文件系统,所以系统其实是起不来的。














![[附源码]java毕业设计社区健康服务平台管理系统lunwen](https://img-blog.csdnimg.cn/46631ce80b8a41a99f6f28cfd9e913e5.png)




