【S5PV210学习笔记】小错误引发大问题(1)

本文分享了裸机移植过程中的几个典型问题及其解决方案,包括标准输入输出函数移植、SD卡重定位失败、自写shell程序回显故障及刷机后无法进入系统等问题。通过对这些问题的剖析,为读者提供了宝贵的调试经验和教训。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

再低级的错误,也是错误,是因为有一些细节没有注意到,高手往往高在细节之处。共勉之。

一、裸机移植标准输入输出函数(stdio)

跟着教学视频进行移植,下载调试发现串口调试助手没有任何输出。经过一番折腾发现,是printf的传参出了问题。

错误:printf('A');

正确:printf("A");

这个问题应该很好发现,但在Linux下用arm-2009q3进行编译,那时还不太习惯,完全没留意去看警告和报错。导致这么简单的一个错误,却是找了很久才发现。即使不是报错,警告也不应该忽视。


二、裸机SD卡重定位失败,无法跳转到BL2

程序编译下载运行后,通过添加LED点亮的代码,发现程序卡在了长跳转BL2的地方,如下截图:


开发板上只看到点亮了一个LED灯,即程序死在了第33行的代码中。

解决办法:

(1)之前在linux下并没有成功写入bin文件,后来重启linux系统后就好了。此时应该如下图,可以看到/dev/sdb和/dev/sdb1:


2问题的根源是,write2sd的时候,第二个镜像烧录错了,烧录成了SD卡启动使用的镜像BL2.bin,应该是烧录uart.bin才对。

两种改法:

A、把下图中的BL2.bin改成uart.bin:


B、不改write2sd,把BL2的Makefile改为如下:


三、自写的shell程序无法正常回显

在调试shell程序的时候,发现串口助手没办法正常回显,经排查,发现是uart_getchar这个底层函数有bug。下图为正确的代码。

原本错误的代码为:

return (rURXH0 &0x0f);


四、刷机后卡在开机画面处,无法进入系统。

试过android4.04、Android2.3、linuxqt等系统都不行。初步怀疑是镜像的问题。后面也不知道为什么突然就把linuxQT刷好了。

当时的步骤如下:

A、 向SD卡中烧录QT的uboot。

B、 改回默认uboot的环境变量。重启uboot。

C、 Fdisk –c 0 进行分区,进入fastboot。

D、 依次烧录三个镜像。

E、  Fastboot reboot

根据后面的朱老师所讲,应该是不同系统之间环境变量的问题(传参问题),或者说是uboot 的问题。下次遇到这样的问题再深入研究一下。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值