我正在尝试在Arduino Yun板上运行Linux。Arduino板包含Atheros AR9331 chipset
在U-Boot上,这些是我正在执行的步骤:
1-下载内核:
ar7240> tftp 0x80060000 openwrt-ar71xx-generic-uImage-lzma.bin;
Load address: 0x80060000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
######################
done
Bytes transferred = 1441863 (160047 hex)
2-擦除闪存以复制内核:
ar7240> erase 0x9fEa0000 +0x160047
Error: end address (0xa0000046) not in flash!
Bad address format
这就是问题似乎0x9fEa0000 +0x160047
超过了闪存的总大小。
所以我的问题是
1-如何计算Uboot中为闪存保留的内存总量(从哪个地址开始和结束),我正在考虑将0x9fEa0000
更改为更少的地址,但我担心我会伤害其他东西
这是帮助的输出:
ar7240> help
? - alias for 'help'
boot - boot default, i.e., run 'bootcmd'
bootd - boot default, i.e., run 'bootcmd'
bootm - boot application image from memory
cp - memory copy
erase - erase FLASH memory
help - print online help
md - memory display
mm - memory modify (auto-incrementing)
mtest - simple RAM test
mw - memory write (fill)
nm - memory modify (constant address)
ping - send ICMP ECHO_REQUEST to network host
printenv- print environment variables
progmac - Set ethernet MAC addresses
reset - Perform RESET of the CPU
run - run commands in an environment variable
setenv - set environment variables
tftpboot- boot image via network using TFTP protocol
version - print monitor version
2-是否有人对Atheros AR9331 chipset有经验,可以帮助我从数据手册中找到FlashMap(从其开始和结束的位置
1条答案
按热度按时间ctehm74n1#
您可以从内核 Boot 命令行确定闪存布局。在u-boot中运行
printenv
命令,或者引导到现有内核并查看引导日志。您需要找到类似以下内容的内容:(网上有很多指南,我从https://finninday.net/wiki/index.php/Arduino_yun上拿了这一个,你的板子可能不一样)。
这意味着存在以下分区:
rootfs分区是14 M,比rootfs映像文件(小于8 MB)大得多,因此理论上您可以将内核映像移动到更低的地址。为此,您需要修改u-boot环境块中的内核 Boot 行(
rootfs
和kernel
分区大小)和bootcmd
参数,以便u-boot知道新内核的位置。FlashMap到
0x9f000000
,因此bootcmd
中的值应为0x9f000000
+内核的偏移量(以字节为单位)。我不确定的是,是否有一个覆盖文件系统用于对闪存的任何持久更改。您能否 Boot 到现有系统并发布
df -h
和cat /proc/mounts
的输出?