某公司3531板子调试笔记
来源:互联网 发布:年薪百万知乎 编辑:程序博客网 时间:2024/04/30 10:07
来自:http://www.youback.net/arm/某公司3531板子调试笔记.html
因工作需要需要需要调试某公司的3531板子,运行我们的程序,从整个调试过程中中还是学到一些知识的现在记录下。
拿到板子找到串口挂上,上电串口消息如下:
1
U-Boot 2010.06-svn83 (Jan 06 2013 - 17:36:14)
2
DRAM: 256 MiB
3
NAND: Special Nand
id
table Version 1.35
4
Nand ID: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
5
No NAND device found!!!
6
0 MiB
7
Spi(cs1) ID: 0xC2 0x20 0x18 0xC2 0x20 0x18
8
Spi(cs1): Block:64KB Chip:16MB Name:
"MX25L128"
9
envcrc 0x8197ccc1
10
ENV_SIZE = 0x3fffc
11
In: serial
12
Out: serial
13
Err: serial
14
boardvalue: 0x1
15
PHY 0x02: OUI = 0x1374, Model = 0x07, Rev = 0x02, PHY not link!
16
user init finish.
17
Press CTRL-C to abort autoboot
in
0 secondsCFG_BOOT_ADDR:0x58080000
这个板子的硬件参数就出来了
DDR:256MB
Flash:16M spi-flash
串口继续打印消息内核加载后消息就不输出了,很明显串口信息被关闭了,等整个板子完全启动了telnet下
telnet 192.168.1.10
输入root密码为空尝试登入,登入不了,试了试几个其他的简单密码也登不上,看来telnet 暂时无法连上了得另某出路
看了看uboot的启动信息有这么一句Press CTRL-C to abort autoboot in 0 secondsCFG_BOOT_ADDR:0x58080000
重启设备,果断按下Ctrl+c很是走运boot没有加密,有搞头。
在uboot里输入printenv查看下启动参数:
bootargs=mem=160M console=ttyAMA0,115200 root=1f01 rootfstype=cramfs mtdparts=hi_sfc:512K(boot),4M(romfs),5632K(usr),1536K(web),3M(custom),256K(logo),1280K(mtd)
可以看到rootfstype=cramfs整个根文件系统是cramfs的,cramfs制作的根文件系统可以挂载到本地的,这样我们就可以查看修改到里面的文件了
还可以基于原来的cramfs重新制作写回去,破解telnet密码的思路顿时有了。
从启动信息里看出来分了6个区,计算出各个分区的偏移地址:
uboot(uboot_xm.bin): 0x0~0x80000 512K(0x80000)
romfs(romfs.cramfs): 0x80000~0x480000 4M(0x400000)
user(user.cramfs): 0x480000~0xA00000 5632K(0x580000)
web(web.cramfs): 0xA00000~0xB80000 1536K(0x180000)
custom(custom.cramfs):0xB80000~0xE80000 3M(0x300000)
logo(not dump): 0xE80000~0xEC0000 512k(0x80000)
mtd(not dump): 0xEC0000~0xFFFFFF 1280K(0x140000)
怎样把4M(romfs)弄出来呢?其实很简单,只要把flash读到内存再从内存了tftp到tftp服务器上就可以了
将uboot里面的tftp服务器地址修改为我的tftp服务器地址:
setenv serverip 192.168.0.7
sa #保存修改的参数,否则重启就丢失了
插上网线使用如下的命令即可将romfs上传到tftp服务器上了
1
mw.b 0x82000000 0xff 0xb00000
2
sf probe 0
3
sf
read
0x82000000 0x80000 0x400000
4
tftp 0x82000000 romfs.cramfs 0x400000
没有错误的话就上传到tftp服务器上了,将romfs.cramfs拷贝到本地目录,执行如下命令
1
cramfsck romfs.cramfs -x romfs
(如果找不到cramfsck 或 mkcramfs 命令请参见我的另一片博文 fedora下找不到mkfs.jffs2 genext2fs mkcramfs的解决方法)
这样就把romfs.cramfs解压到romfs里了,查看了下他的启动脚本
etc/inittab 没有什么可看的
etc/init.d/rcS倒是有很多信息
1
#!/bin/sh
2
mount
-t cramfs /dev/mtdblock2 /usr
3
mount
-t cramfs /dev/mtdblock3 /mnt/web
4
mount
-t cramfs /dev/mtdblock4 /mnt/custom
5
mount
-t cramfs /dev/mtdblock5 /mnt/logo
6
mount
-t jffs2 /dev/mtdblock6 /mnt/mtd
7
.....
8
...
9
cd
/usr/etc
10
./loadmod
11
.....
12
.....
这里只给出一些重要的信息,可以看到分区基本上都是cramfs ,也就是说这里面的文件对我们没有秘密可言了
使用相同的方法我们就可以将他里面的文件全部弄出来了。
现在要做的就是先破解telnet密码,我们知道telnet密码在etc/password里面打开他将里面的root用户和密码替换成
root:$1$$qRPK7m23GJusamGpoGLby/:0:0::/root:/bin/sh
我们就可以使用root密码为空登入,执行如下命令制作一个cramfs文件系统
mkcramfs romfs rom_root.cramfs
这样就做好cramfs文件系统了,使用刚才tftp命令写回板子上的flash,重启进uboot输入如下命令
1
mw.b 0x82000000 0xff 0xb00000
2
tftp 0x82000000 romfs_root.cramfs
3
sf probe 0
4
sf erase 0x80000 0x400000
5
sf write 0x82000000 0x80000 0x400000
#千万要注意不要把地址搞错否则会破坏flash里面的固件
6
reset
系统重启成功,挂串口的话直接就可以出现如下的提示了:
使用telnet 登入也OK了,
下面就是挂NFS,将我的虚拟机目录root_fs挂载上去,所有的程序都放在了nfs里面包括库等同时到处几个环境变量
1
mount
-o nolock 192.168.1.22:/root_fs /home
2
export
LD_LIBRARY_PATH=/home/lib:$LD_LIBRARY_PATH
3
export
QT_QWS_FONTDIR=/home/lib/font
4
export
PATH=/home/lib:$PATH
经过一些的的调试和查看,这货使用的全是静态编译,没有一个系统库文件,我的程序使用的动态库编译的,将系统库glibc等也拷到root_fs下
程序始终运行不了,busybox也裁剪的没有几个命令可用,本来是换个busybox的,但是做出来的romfs.cramfs大于4M了没法子搞,后来
只能使用如下命令来
1
ld-2.11.1.so ./gui_test -qws
报错:
cannot create Qt for Embedded Linux data directory: /tmp/qtembedded-0
我的这个程序是个Qt的界面程序,今天才知道Qt程序运行起来要在tmp目录里写文件,cramfs文件系统是知道的怎么办,把tmp挂到内存里就OK了
1
mount
-t tmpfs none /tmp
后话,其实某公司把3531做的还是很好的,把成本压的很低,自然flash这些东西就使用16M。
有什么问题欢迎留言交流。
end
- 某公司3531板子调试笔记
- 某公司3531板子调试笔记
- 某公司3531板子调试笔记
- 某公司3531板子调试笔记
- 某公司3531板子调试笔记--转载
- [RK3399][Android7.1] 调试笔记 --- 默认板子无法亮屏
- atmel板子调试
- 调试板子启动不了
- 开始调试C6747的板子
- 调试pcb板子的步骤
- 仿照ZEDboard设计板子调试
- i.MX6Q的qnx调试笔记---安装IDE和编写BSP,boot启动板子
- ARM 板子的启动问题调试
- 板子做出来了,该调试了。
- 2440板子启动不了的调试
- 调试amligic m6 mx mid板子总结
- 调试amligic m6 mx mid板子总结
- ST nucleo板子外接串口调试方法
- 编译 50 字节代码耗费 4G 内存 2015-03-17 程序员的那些事 程序员的那些事 程序员的那些事 微信号 iProgrammer 功能介绍 最有影响力的程序员自媒体,关注程序员相关话题
- 大骆驼 第二章
- Brown (black) film faced plywood / marine plywood
- 静态方法的同步测试
- 数据库并发控制技术
- 某公司3531板子调试笔记
- c#注册表操作
- 让 C 程序更高效的 10 个建议
- 蓝桥杯算法训练——最短路(map实现邻接表)
- C++ 容器与继承
- 未亡羊先补牢-2015年03月18日
- 弦图与区间图的学习
- 用 C 语言编写一个简单的垃圾回收器
- Java语言基础——第十回 异常与异常处理