Other Parts Discussed in Thread: AM3352
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:AM3352 工具/软件:Linux
我有一个定制板、其 MCU 为 am3352。 我正在使用 SDK 02.00.02.11
我尝试 使用 SPI NOR 闪存引导 Linux 系统。
我成功地在 SPI NOR 闪存上写入了 mLO.byteswap、u-boot.img、dtb 和 zImage。
但是、我无法在 Linux 启动时装载文件系统。
我在 闪存的第6个分区上编写了 rootfs.jffs2。
因此、我将 spiroot 设置为"/dev/mtdblock6 rw"。
我不知道我在系统上犯了什么错误。
完成整个引导后、可以安装闪存的第6个分区(文件系统)。 因此、我确信文件系统编写得很好
我已连接内核日志、u-boot env 和 DTS 文件。
任何人都可以帮助我.. 我在内核日志的"所有分区列表"上找不到 mtdblock 系列。
这是内核引导日志
U-Boot 2015.07 (2017年3月3日- 18:39:01 +0900) I2C:就绪 DRAM:256 MIB MMC:OMAP SD/MMC:0、OMAP SD/MMC:1 SF:检测到页大小为512字节的 S25FL512S_256K、擦除大小为256 KiB、总共为64 MIB ***警告-使用默认环境 网络时 CRC 错误: cpsw、usb_ether 按任意键停止自动引导:0 U-Boot# setenv 引导 root '/dev/mtdblock6 rw' U-Boot# setenv spiargs 'setenv bootargs console=${console}${oploads}root=${pidroot}rootfstdr =${pedrfstvs}' U-Boot;${tpsf}s sf}s{tpsf}s sbspidr sf}s;从${pidtpsf 读取${pidtspi_spi_spidr s 0 sf}sf{pidr sf}s{pidr sf{pidr、sf}s{pidr s{spi_spidr、sf}sf s bootz ${loadaddr}-${fdtaddr}' U-Boot#运行从 SPI 引导的 spiboot ... SF:检测到页大小为512字节的 S25FL512S_256K、擦除大小为256 KiB、总共64 MIB 器件0偏移量0xe0000、大小为0x362000 SF:3547136字节@ 0xe0000读取:OK 器件0偏移量0x80000、大小0xf000 SF:61440字节@ 0x80000读取: 确定 内核映像@ 0x82000000 [ 0x000000 - 0x31d810 ]## 平展设备树 blob,88000000使用 0x88000000的 FDT blob 启动 正在将设备树加载到8ef2f000,结束8ef3a454... 确定 启动内核... [0.000000]在物理 CPU 上引导 Linux 0x0 [0.000000] 初始化 cgroup 子系统 CPU [0.000000]初始化 cgroup 子系统 cpuacct [0.000000] Linux 版本4.1.18-gbbe8cfc (root@Ubuntu)(gGCC 版本4.9.3 20150413 (cc ele便捷性)(Linaro 4.9-2015.05))))(gGCC 版本4.1.42 K17年2月24日星期五 )[0.42] CPU:24] ARMv7处理器[413fc082]修订版2 (ARMv7)、CR=10c5387d [ 0.000000] CPU:PIPT / VIPT 非混叠数据高速缓存、VIPT 指令高速缓存 [ 0.000000 m]机器模型:TI AM335x EVM [ 0.000000 mc]:保留24 个0x8d000000的写回缓存[ 0.000000 mib] CPU 策略: 所有 CPU 均在 SVC 模式下启动。 [0.000000] AM335X ES2.1 (NEON) [0.000000]在区域顺序中构建了1个区域列表,移动分组打开。 总页数:64960 [0.000000]内核命令行:console=ttyO0、115200n8 root=/dev/mtdblock6 rw rootfstype=jffs2 [0.000000] PID 哈希表条目:1024 (顺序:0、4096字节) [0.5300]条目高速缓存哈希表条目:32768 (顺序:5、131072字节) [0.000000 inode ine-4字节( 顺序:16384bytes) 提供225568K/262144K (6315K 内核代码、247K rwdata、2148K rodata、268K init、233K BSS、 12000K 保留、24576K CMA 保留、0K HIGHMEM) [0.000000]虚拟内核内存布局: [0.000000] 向量:0xffffff0000 - 0xffffff1000 (4KB) [0.000000] Fixmap:0xc00000 - 0xc00000 (3072 KB) [0.000000] vmalloc:0xd0800000 - 0xc000000 (744MB) [0.000000] 低内存:0xC0000000 - 0xd0000000 (256 MB) [0.000000] pkmap:bfe00000 - 0xC0000000 (2 MB) [0.000000] 模块:bbbf000000 - bbfe00000 (14 MB) [0.000000] .text:0xc0008000 - 0xc084c05c (8465KB) [0.000000] init:0xc084d000 - 0xc0890000 (268KB) [0.000000] .data:0xc0890000 - 0xc08cdfa0 (248KB) [0.000000] .bss:0xc08d0000 - 0xc090a7c8 (234KB) [0.000000] slub:HWalign=64、order=0-3、MinObjects=0、CPU=1、Nodes=1 [0.000000]可抢占分层 RCU 实现。 [0.000000]打印的每个 CPU 的附加信息有停转。 [0.000000] NR_IRQ:16 nr_IRQ:16 16 [0.000000] IRQ:在0xfa200000 (修订版本5.0)处找到 INTC、具有128个中断 [0.000000] OMAP 时钟事件源:timer2 (240000Hz [0.000016]) sched_clock:32位(24MHz)、分辨率41ns、每894784849ns 换行 一次 TimerFFFF 时钟源:0x0000_max:0x0000FFFF 时钟源:0x0000_FFFF:0x0000.FFFF 79635851949 ns [0.000048] OMAP 时钟源:24000000 Hz [0.000242]的 Timer1控制台:彩色虚拟设备80x30 [0.000269]警告:'console=ttyO0'已被'ttyS0' [0.000276]取代,这可确保您仍能看到内核消息。 请 [0.000282]更新您的内核命令行。 [0.000302]校准延迟环路... 795.44 BogoMips (lpj=3977216) [0.089134] pid_max:默认值:32768最小值:301 [0.089237] Security Framework 已初始化 [0.089293]安装高速缓存哈希表条目:1024 (顺序:0、4096字节) [0.089304]安装点高速缓存哈希表条目:1024 (顺序: 0、4096字节) [0.090017]初始化 cgroup 子系统 blekio [0.090045]初始化 cgroup 子系统存储 器[0.09009090]初始化 cgroup 子系统器件 [0.090105]初始化 cgroup 子系统冷冻器 [0.090120] perf 一致性化 cgroup 子系统事件[0.090150] CPU:测试写入缓冲区: OK [ 0.090580]为0x80008200 - 0x80008270 [ 0.092245] devtmpfs 设置静态身份映射:已初始化 [ 0.102756] VFP 支持 v0.3:Implementor 41架构3第30部分版本 C 版本3 [0.168837]时钟源代码:MASK:0xFFFFFFFF max_cycles:0xFFFFFFFF、190002400024000s:0xFFFFFF24000_intrl max_00024000s :190002400024000_00024000_00024000s:0x00024000_00024000_000_000 初始化的 pinctrl 子系统 [0.172584] NET:注册的协议系列16 [0.174928] DMA:预分配的256 KiB 池用于原子一致性分配 [0.199130] cputle:使用调节梯 [0.229116] cputle:使用 调速器菜单[0.233695] GPIO 硬件版本0.1[0.241853] OMAP-GPMC 50000000: 无法找到节点/ocp/l4_wkup@44c0000000/CSCM@210000/ pinmux@800/GGPMC_PINS_DEFAULT 的 pctldev、推迟探测器 [0.243478]没有 ATAG? [0.243505]硬件断点:不支持调试架构0x4。 [0.289321] EDMA 49000000.EDMA:TI EDMA 引擎驱动程序 [0.292776] vgaarb:加载 的[0.293362] SCSI 子系统已初始 化[0.293889] OMA_i4802a000.i2c:无法找到节点/ocp/l4_wkup 的 pctldev@44c0000000/SCM@210000/pinmux@0.2985] Linux v2410000_mux :默认媒体接口[0.2985][0.2985][0.2985] gb:v2985pms_gb:v2985] gb:v2985pms_gb LinuxPPS API 版本。 1寄存 式[0.294145] pps_core:软件版本。 5.3.6 -版权所有2005-2007 Rodolfo Giometti 已注册[0.294174] PTP 时钟支持 [0.295022] OMAP-mailbox 480c8000.mailbox:OMAP mailbox rev 0x400 [0.295261] Advanced Linux Sound Architecture Driver initialized. [0.296131]切换到时钟源 Timer1 [0.307385] NET:注册协议系列2[0.308269] TCP 建立哈希表条目:2048 (顺序:1、8192字节) [0.308305] TCP 绑定哈希表条目:2048 (顺序:1、8192字节) [0.30834] TCP: 配置的哈希表(建立2048 BIND 2048) [ 0.308422] UDP 哈希表条目:256 (顺序:0、4096字节) [ 0.308442] UP-Lite 哈希表条目:256 (顺序:0、4096字节) [ 0.308614] NET:注册协议系列1 [0.309025] RPC:注册命名的 UNIX 套接字传输模块。 [0.309040] RPC:注册的 UDP 传输模块。 [0.309047] RPC:注册的 TCP 传输模块。 [0.309054] RPC:注册的 TCP NFSv4.1反向通道传输模块。 [0.309983] CPU PMU:无法解析/pmu/interrupt-affinity [0][0.310031]硬件性能事件:通过 armv7_cortex_A8 PMU 驱动程序启用、5个可用计数 器[0.312084] futex 散列表条目:256 (顺序:-1、3072字节) [0.312175]审核:初 始化 netlink Subsys (禁用)[0.3120242]:0.3120242]审核类型:0.312FS:0.0215] 磁盘配额 dquot_6.6.0 [0.320438] VFS:Dquot-cache 哈希表条目:1024 (顺序0、4096字节) [0.322774] NFS:注册 id_resolver 密钥类型 [0.322856]注册的密钥类型 id_resolver [0.322865]注册的密钥类型 id_legacy [0.322944] jffs2:版本2.2。 (NAND)(摘要)ⓒ2001-2006 Red Hat, Inc. [0.324841] NET:注册协议系列38 [0.324906]注册的 IO 调度程序 NOP [0.324919]注册的 IO 调度程序截止日期 [0.324976]注册的 IO 调度程序 cfq (默认) [0.325991] pinctrl-single 44e10800.pinmux:142个 pA f9e10800大小 的引脚[0.329030]串行:启用的 IRQ 1650/283650驱动程序端口、 44e09000.serial:启用的[0.321310 MMIO 0x44e09000 (IRQ = 158、base_baud = 3000000)处的 ttyS0是启用 的8250 [ 0.953139]控制台[ttyS0] 48022000.serial:在 MMIO 0x48022000 (IRQ = 159、base_baud = 3000000)处的 ttyS1是8250 [ 0.967543] 481a8000.serial: MMIO 0x481a8000 481aa000.serial: (IRQ = 160、base_baud = 3000000)上的 ttyS4是 MIO 0x481aa000 (IRQ = 161、base_baud = 3000000)上的8250 [ 0.987160][DRM]已初始化 DRM 1.1.0 20060810 [ 1.0032955]模块[ 已加载150]模块 :15015] 必须提供 MTD 器件(mtddev=name/number) [ 1.086197] DaVinci_MDIO 4a101000.MDIO:达芬奇 MDIO 修订版本1.6 [ 1.092338] libphy:4a101000.MDIO:probed [ 1.098050] DaVinci_MDIO 4a101000.MDIO:phy[0]:device 4a10674.100647.4d1000 :dsp430.4d1000:d1000:dspiO 驱动程序4d1000:dam430.4d1000:d1000:d1000:dsp430.d1000:d1000 mc4:d1000:dspiO 4d1000:d1000:d1000:dam430.d1000:d1000 mc4:dam430.d1000:d1000:d1000:d1000 mc4:d1000: d 所有鼠标通用的 PS/2鼠标设备 [1.129942] i2c /dev/entries 驱动程序 [1.134711] omap_hsmmc 4781000.mmc:获取 CD GPIO [1.139808] omap_hsmmc 4781000.mmc:无法获取 RX DMA 引擎通道0 [1.176566] ledtrig-cpu:注册以指示 配置文件上的活动[1.4536] 使用 ARM/armv7 [1.188736]初始化 XFRM 网链路插座 [1.193074] NET:注册协议系列17[1.197664] NET:注册协议系列15[1.202256] 注册的 Keytype DNS_旋 变传感器 [1.206873] OMAP-VOLTAGE_Late_INIT:未添加电压驱动器支持 [1.213612]/cpus/cpu@0/24m@eCPU 稳压器无法获取 volt2mcules #12]/ocp/i2c 0@@0d2d2mcell/tps/ e2d2mcumb 无法注册 CPU0时钟通知程序:-22 [ 1.229431] cpufreq-voltdm:cpufreq-voltdm.0的探测器失败,错误-22 [ 1.236796] ThumbEE CPU 扩展支持。 [1.241115]注册 SWP/SWPB 仿真处理程序 [1.248615] OMAP-GPMC 50000000。GPMC:GPMC 修订版本6.0 [1.253800] GPMC_mem_init: 禁用映射在0x0-0x1000000 [1.261687] OMAP-i2c 4802a000。i2c:总线1 rev0.11在 VB27100] 器件上禁用[1.2618000](rtcA)[1.2785]器件:1.2718000](无法打开 VB2685]器件[1.2785](rtcA)[1.2685]器件[1.2785](r2780]:1.2780]器件 [1.282732]找不到声卡。 [1.287468]所有分区列表: [1.291004] 0100 8096 ram0 (驱动器?) [1.295653] 0101 8096 ram1 (驱动器?) [1.300498] 0102 8096 RAM2 (驱动程序?) [1.305141] 0103 8096 ram3 (驱动器?) [1.309837]0104 8096 ram4 (驱动器?) [1.314480]0105 8096 ram5 (驱动器?) [1.319174] 0106 8096 ram6 (驱动器?) [1.323817]0107 8096 ram7 (驱动器?) [1.328497] 0108 8096 ram8 (驱动器?) [1.333140]0109 8096 ram9 (驱动器?) [1.337802] 010A 8096 ram10 (驱动程序?) [1.342531]010b 8096 ram11 (驱动器?) [1.347278] 010C 8096 ram12 (驱动器?) [1.352007] 010d 8096 ram13 (驱动器?) [1.356753]010e 8096 ram14 (驱动器?) [1.361486]010f 8096 ram15 (驱动器?) [1.366229]没有文件系统可以挂载根,已尝试:jffs2 [1.371667]内核紧急状态-未同步:VFS:无法在未知块(0、0) [1.379977]上安装根 FS -[结束内核紧急状态-未同步:VFS:无法在未知块(0、0) 上安装根 FS [ 82.686140非随机初始化池
这是 u-boot env。
u-Boot# print
arch=arm
args_mmc=run finduid;setenv bootargs console=${console}${optargets}root=${uuid}rw bootfstypy=${mmcrootfstype}rootbotrate=115200 board=my_board=my_board=my_board=run_bootd=v=unknown
bootv=v=v=bootv=v=run_bootv=v=v2;bootv=unknown bootv=run_bootv=run_bootv=v=bootv=bootv=bootv=v=unk=bootv=bootv=unknown bootv=v=bootv=bootv=bootv=bootv=bootv=unk_bootv=bootv=bootv=unk_bootv=boot_boot_part=bootv=boot_bootv=unk=unk=boot_boot_boot_bootv=v=unk=bootv=boot
uEnv.txt
source ${loadaddr}
console=ttyO0、115200n8
cpu=armv7
envboot=MMC dev ${mmcdev};如果 MMC 重新扫描;则回显在设备${mmcdev}上找到的 SD/MMC;如果运行 loadbootscript;然后运行 bootscript;否则运行 loadbootenv;然后回显从${mmvenvenvdev};如果运行 envulip、则回显式 envip;命令文件;
eth1addr=b0:d5:cc:c4:ad:8b
ethact=cpsw
ethaddr=b0:d5:cc:c4:ad:ad:89
FDT_addr=0x88000000
fdtaddr=0x88000000
fdtfile=undtfdtfile=undpundef=if
test $board_name = A335b_ddr_rb;如果设置为35btb、则设置为35btb;如果设置为35bnv_dtb;如果设置为35btb、则设置为35tb;如果设置为35tb;如果设置为35tb、则设置为$tb;如果设置为35tb、则设置为 tb;如果设置为 tb、则为35tb;如果设置为 tbnv_entb、则为 tb;如果为 tb、则为 tb、则为 tb;如果为 tb、则为 tb、则为 tb、则为 tb; 如果 TEST $board_name = A335_ICE;则 setenv fdtfile AM335x-icev2.dtb;fi;如果 TEST $board_name = my_board;然后 setenv fdtfile AM335x-ERTU.dtb;fi;如果 test $fdtfile = undefined;则警告:无法确定设备树是否
使用 mcumb;从 uuuuv=dumb 环境导入 dumb;fuv=uuuuuuuuuuv2环境中导入 dumb; env 导入-t ${loadaddr}${filesize}
init_console=if test $board_name = a335_ice;然后 setenv 控制台 ttyO3、115200n8;否则 setenv 控制台 ttyO0、115200n8;fi;
ipaddr=10.11.22.22
kernel_addr_r=0x8200n8;$
{loaddr}mmc}${loadaddr}$ ramdisk.gz{loaddr}mmdr}${loadaddr}${loadaddr}mcaddr}${loadaddr}${mmdr}dr dr}${loadaddr}tmmdr dr}${loadaddr}dr dr{mmdr dr}${loadaddr}tmmdr dr{mmdr dr}${loadaddr}${mmdr dr dr dr dr dr}${loadaddr}dr dr{mmdr dr dr dr}${mmdr dr dr dr dr dr}
如果 MMC 重新扫描;然后回显在器件${mmcdev}上找到的 SD/MMC;运行 envboot;如果运行 loadimage;然后运行 mmcosf;fi;
mmcdev=0
mmcos=run args_mmc;如果测试${boot_FDT}= yes ||测试${boot_FDT}= try;如果运行 loadftz =${boot_booth;则回显式${boot_dt};否则请尝试回显式:${boot_dr};如果运行 loaddr = fdt;请尝试回显式: 无法加载 DT;fi;fi;else bootz;fi;
mmcrootfstype=ext4 rootwait
netargs=setenv bootbootargs console=${console}${opauts} root=/dev/nfs nfsroot=${serverip}:${loadpath},${ntfsopts} rw ip=${ipaddr}:${serveraut}:${gatewayip}:${loadnetip}:
从 netbon\netnets\netv}运行;netmask: 运行 netargs;bootz ${loadaddr}-${fdtaddr}
netloadfdt=rootp ${fdtaddr}${fdtfile}
netloadimage=tftp ${loadaddr}${bootfile}netloadfdt=tftp=nolrootpartitions=uuuuuuuuid_disk=$
{ramfs=targb}
${boot_b=targb=targs=gp=gprefs、ramfs=ramp=gp=ras=ngp=r\netr\netr\netr\netras=uuuuuuuuuuuuuuuuuuuuuuid=ras=ras=ras=ras=ras=ras=ras=gr\nets=r\nuuu
bootz ${loadaddr}${rdaddr}${fdtaddr}
ramdisk_addr=0x88080000
ramroot=/dev/ram0 rw
ramrootfstdr=ext2
rdraddr=0x88080000
rootpath=/home/ghlee/ti-processor-sdk/targetFS
serverip=10.11.22.33
soc so=am33xx
spidargs=setenv targets console=exts=$
{dtspidsf}pedr}${fspids boots}pedr}${fspidr}pedr s{spidr}sbedr s = zf s{fsps boots}${pedr}pedr}pedr s{spidr}pedr s{sps}s bootz ${loadaddr}-${fdtaddr}
spidboot_mmcfs=setenv spiargs setenv bootargs console=${console}${optargets}root=${dtuidid}rw
/dev/mtdblock4
:rootfstypes=${mmcrodstid=pedrf
}s boot_mspid=0=zr{dspi= 0xdspi_stpedr}fu= 0xdcpu_spi_spids= 0xdspi= 0=fu_spi_spi_stpedrfu= 0x0004:fu_spi_spidr}fu_spi= pedrfu_spidr:fu_spi= pedrfu_spi= 0xfu_spi= fu_spi= pedrfu_spi= fu_spi= fu_spi= fu_spi= 0xtidpf-natedrfu.fu_spi= 0xdr:f
最后是 DTS 文件中的 SPI 区域
spi0{(&S)
状态="正常";
pinctrl-names ="default";
pinctrl-0 =<&spi0_pins_default>;
SPI-FLASH@0、0{
兼容="m25p80";
SPI-max-frequency =<24000000>;
reg =<0>;
#address-cells =<1>;
大小单元格=<1>;
分区@0{
标签="NOR.MLO.byteswap";
REG =<0x00000000 0x00020000>;
只读;
};
分区@1{
标签="NOR.u-boot.img";
REG =<0x00020000 0x00060000>;
只读;
};
分区@2{
标签="NOR.FDT";
REG =<0x00080000 0x00020000>;
只读;
};
分区@3{
label ="NOR.1st u-boot-env";
REG =<0x000a0000 0x00020000>;
};
分区@4{
label ="NOR.2nd u-boot-env";
REG =<0x000c0000 0x00020000>;
};
分区@5{
标签="NOR.Linux 内核";
REG =<0x000e0000 0x00340000>;
只读;
};
分区@6{
标签="NOR.file-system";
REG =<0x00440000 0x03bc0000>;
};
};
};