嵌入式Linux系统Bootloader启动调试技术(回想)
嵌入式系统搭建过程中,对于系统平台搭建project师最初的一步一般是移植Bootloader ,当然移植有几个级别,通常最常见的是參考的EVM 的硬件有了改动(如更改了FLASH ,更改了SDRAM 、DDR SDRAM 等)。而且是初次调试硬件。更大的困难是公司为节省成本不打算买上万的EVM 开发板,或者EVM 开发板须要license 才干购买,这时移植Bootloader 是比較难做的,只是也不是没有方法,最有效的有两个--点灯和串口打印
。(作者通过这样的方法调试成功过IXP2400(Xscale) 的Redboot 、EP9307(ARM9) 的U-boot 等Bootloader )。
Bootloader 调试技术- 点灯 ,当烧写好Bootloader 。启动Bootloader ,肯定是从一个固定的地址開始运行程序。最初的程序是从FLASH 中读取运行的,有些处理器是直接使用FLASH 地址,有些会影射到FLASH 地址。此时SDRAM 能够觉得没用到。怎样确认程序有没有直接运行。通经常使用点灯来验证,在Bootloader 入口代码段尽量靠前初加入点灯代码(使用GPIO 控制)。跟踪代码的运行。假设确认点灯代码没问题,程序没运行,那可能是启动地址没有指向FLASH
地址,硬件晶振没起振,硬件IC 电源供电问题,硬件IC 引脚接地问题,CPU 配置字问题(如启动模式),CPLD 时序调节问题等等,这须要硬件和软件project师联合调试(这须要团队精神)。当然假设移植Bootloader 的project师做过硬件那是再好只是的。全部的问题排查和解决之后,点灯成功是种必定。
Bootloader 调试技术- 串口打印 ,点灯成功之后就能够对重要的配置參数跟踪调试,比較重要的是程序跳转到SDRAM 运行( 重点是SDRAM 时序參数和clk 配置正确) ,而后就须要打通串口。打通串口须要对UART 參数进行正确配置,測试用输出字符函数(这里可没printf() 函数可用)。通常点灯成功之后打通串口相对easy。这里重点是使用串口调试程序。在printf() 函数可用之前使用低级别的串口输出函数实现程序的跟踪调试(一般是调试汇编代码),在printf()
函数可用之后使用printf() 调试代码。
如上是Bootloader 调试过程中最重要的两个调试技术。灵活使用将带来工作效率的提升,无论是U-boot 、Redboot 还是厂商专有的Bootloader( 如rrload 、vivi 等) ,两个调试技术都有效。
(作者 冯青华 信庭嵌入式工作室- 主管)
<转载请注名来路>
嵌入式Linux系统Bootloader启动调试技术(回想)的更多相关文章
- 浅析嵌入式Linux系统的构成和启动过程
在我们的周围,大量的嵌入式设备都是基于Linux系统来构建的,嵌入式Linux与主机Linux相比有着自己的一些特点,本文就嵌入式Linux系统的构成和启动过程做一些总结. 一.嵌入式Linux系统构 ...
- 嵌入式Linux系统的构成和启动过程
转自:http://blog.csdn.net/weiganyi/article/details/11561859 在我们的周围,大量的嵌入式设备都是基于Linux系统来构建的,嵌入式Linux与主机 ...
- 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)
深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...
- 探索 Linux 系统的启动过程
引言 之所以想到写这些东西,那是因为我确实想让大家也和我一样,把 Linux 桌面系统打造成真真正正日常使用的工具,而不是安装之后试用几把再删掉.我是真的在日常生活和工作中都使用 Linux,比如在 ...
- Holer实现外网访问ARM嵌入式Linux系统
公网访问ARM嵌入式Linux系统 实验室里的ARM嵌入式Linux系统,只能在局域网内访问,怎样从公网也能访问内网ARM嵌入式Linux系统? 本文将介绍使用holer实现的具体步骤. 1. 准备工 ...
- 外网访问ARM嵌入式Linux系统
外网访问ARM嵌入式Linux系统 实验室里的ARM嵌入式Linux系统,只能在局域网内访问,怎样从外网也能访问ARM嵌入式Linux系统? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并 ...
- 详解linux系统的启动过程及系统初始化
一.linux系统的启动流程 关于linux系统的启动流程我们可以按步进行划分为如下: POST加电自检 -->BIOS(Boot Sequence)-->加载对应引导上的MBR(boot ...
- Linux系统快速启动方案
========================= 基本常识 ========================= Linux系统基本启动流程: 1. CPU从ROM(如果有的 ...
- 嵌入式linux系统的构建
前期工作:a.配置好tftp服务器:在嵌入式的童年中有介绍 b.开发板可以pc,linux 三者可以互相ping通 c.配置好nfs服务器:同样在嵌入式的童年中有介绍 一.嵌入式linux内核的制作( ...
随机推荐
- web常用正则表达式
1. 平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用: 2. "^\d+$" //非负整数(正整数 + 0) 3. "^[0-9]*[1-9] ...
- coder
#include <iostream>#include <GL/glut.h>using std::cout;using std::endl;float windowWidth ...
- 把一个string串的所有小写字母转成大写字母的例子来看看看全局函数的使用
今天写了一个小例子,把字符串里面的所有小写字母全部转换成大写字母http://blog.csdn.net/yasaken/article/details/7303903 1 #include &quo ...
- url、base64 编码规则
UrlEncode 相关: URI所允许的字符分作保留与未保留. 保留字符是那些具有特殊含义的字符. 例如, 斜线字符用于URL (或者更一般的, URI)不同部分的分界符. 未保留字符没有这些特殊含 ...
- Sublime text 3 快键方式汇总 及 主题应用
Sublime Text 3 快捷键汇总 Sublime Text 3是款非常实用代码编辑神器,但是想要用任何一款软件,掌握一些快捷键还是很有必要的. 选择类 Ctrl+D 选中光标所占的文本,继续操 ...
- mvc Model元数据【学习笔记】
页面中Html.Editorfor(model=>model.fieldname)这些方法,都是通过Model的元数据来生成html的,我们如果想控制最终生成的html,可以通过修改元数据来实现 ...
- 自定义Web控件写事件
--------------------myRegister1.ascx前台代码----------------------- <script src="js/Jquery1.7.js ...
- 关于if/else if
今天写存储过程的时候发现了个问题,就是在用if.elsif拼接sql的时候,得到的结果跟想象中 的不一样,大概描述是: 我传进去多个参数,然后判断每个字段是否为空,非空则将字段拼接上去,结果跟预料的 ...
- 采用Json字符串,往服务器回传大量富文本数据时,需要注意的地方,最近开发时遇到的问题。
json字符串中存在常规的用户输入的字符串,和很多的富文本样式标签(用户不能直接看到,点击富文本编辑器中的html源码按钮能看到),例如下面的: <p><strong>富文本& ...
- 用PYTHON输入输出字符串
这段好懂的,可以互动. import sys import re class BadEmployeeFormat(Exception): """Badly formatt ...