嵌入式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内核的制作( ...
随机推荐
- Hdu 3177 Crixalis's Equipment
Crixalis's Equipment Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- CSS3随笔系列之transform(一)—— transform-origin
transform-origin属性平时似乎用得很少,它决定了变换时依赖的原点.基本的属性特性可以参考CSS手册. 如果在H5动画项目中,用到旋转的话,它还是不能小觑的. 假如我们做一个秋千效果 其实 ...
- Matlab聚类分析[转]
Matlab聚类分析[转] Matlab提供系列函数用于聚类分析,归纳起来具体方法有如下: 方法一:直接聚类,利用clusterdata函数对样本数据进行一次聚类,其缺点为可供用户选择的面较窄,不能更 ...
- codeforces C. Painting Fence
http://codeforces.com/contest/448/problem/C 题意:给你n宽度为1,高度为ai的木板,然后用刷子刷颜色,可以横着刷.刷着刷,问最少刷多少次可以全部刷上颜色. ...
- 第1章 开发环境安装和配置(二)安装JDK、SDK、NDK
原文 第1章 开发环境安装和配置(二)安装JDK.SDK.NDK 无论是用C#和VS2015开发Androd App还是用Java和Eclipse开发Androd App,都需要先安装JDK和Andr ...
- Spark MLBase分布式机器学习系统入门:以MLlib实现Kmeans聚类算法
1.什么是MLBaseMLBase是Spark生态圈的一部分,专注于机器学习,包含三个组件:MLlib.MLI.ML Optimizer. ML Optimizer: This layer aims ...
- Autofac 之 基于 Castle DynamicProxy2 的 Interceptor 功能
Autofac 结合 Castle DynamicProxy2 功能 Autofac 不仅作为轻量级高效的 IoC 容器,而且还能很好的与 Castle.DynamicProxy2 结合 ...
- [BZOJ2173]整数的lqp拆分
[题目描述] lqp在为出题而烦恼,他完全没有头绪,好烦啊… 他首先想到了整数拆分.整数拆分是个很有趣的问题.给你一个正整数N,对于N的一个整数拆分就是满足任意m>0,a1 ,a2 ,a3…am ...
- Maven学习(1) - Maven入门
home index:http://maven.apache.org/ download:http://maven.apache.org/download.cgi install: http://ma ...
- MYSQL删除以数字开头的字段
例子: // 删除以0开头的字段 DELETE FROM `week_energy_copy` WHERE openid like '0%'; // 删除以数字开头的字段 DELETE FROM `w ...