嵌入式系统搭建过程中,对于系统平台搭建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启动调试技术(回想)的更多相关文章

  1. 浅析嵌入式Linux系统的构成和启动过程

    在我们的周围,大量的嵌入式设备都是基于Linux系统来构建的,嵌入式Linux与主机Linux相比有着自己的一些特点,本文就嵌入式Linux系统的构成和启动过程做一些总结. 一.嵌入式Linux系统构 ...

  2. 嵌入式Linux系统的构成和启动过程

    转自:http://blog.csdn.net/weiganyi/article/details/11561859 在我们的周围,大量的嵌入式设备都是基于Linux系统来构建的,嵌入式Linux与主机 ...

  3. 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)

    深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...

  4. 探索 Linux 系统的启动过程

    引言 之所以想到写这些东西,那是因为我确实想让大家也和我一样,把 Linux 桌面系统打造成真真正正日常使用的工具,而不是安装之后试用几把再删掉.我是真的在日常生活和工作中都使用 Linux,比如在 ...

  5. Holer实现外网访问ARM嵌入式Linux系统

    公网访问ARM嵌入式Linux系统 实验室里的ARM嵌入式Linux系统,只能在局域网内访问,怎样从公网也能访问内网ARM嵌入式Linux系统? 本文将介绍使用holer实现的具体步骤. 1. 准备工 ...

  6. 外网访问ARM嵌入式Linux系统

    外网访问ARM嵌入式Linux系统 实验室里的ARM嵌入式Linux系统,只能在局域网内访问,怎样从外网也能访问ARM嵌入式Linux系统? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并 ...

  7. 详解linux系统的启动过程及系统初始化

    一.linux系统的启动流程 关于linux系统的启动流程我们可以按步进行划分为如下: POST加电自检 -->BIOS(Boot Sequence)-->加载对应引导上的MBR(boot ...

  8. Linux系统快速启动方案

    =========================        基本常识       ========================= Linux系统基本启动流程: 1. CPU从ROM(如果有的 ...

  9. 嵌入式linux系统的构建

    前期工作:a.配置好tftp服务器:在嵌入式的童年中有介绍 b.开发板可以pc,linux 三者可以互相ping通 c.配置好nfs服务器:同样在嵌入式的童年中有介绍 一.嵌入式linux内核的制作( ...

随机推荐

  1. phpcms安装完成后总是跳转到install/install.php

       很多人在本地安装phpcms后总是跳转到install/install.php.由于很多人是第一次使用phpcms,不知道为何会出现这个错误.出现这个大都是phpcms的缓存所致. 如何解决ph ...

  2. 存储过程修改产品描述页图片alt描述信息

    今天修改了所有产品的图片信息,用到了存储过程.在参考下面存储过程以后,终于搞定了. 1 BEGIN 2 DECLARE Done INT DEFAULT 0; 3 4 DECLARE CurrentL ...

  3. 设置(TableViewController)通用框架

    本文学习于传播播客.李明杰老师.感谢

  4. 【python】运算优先级

    来源:小甲鱼 课件

  5. iOS: 学习笔记, Swift运算符定义

    Swift操作符可以自行定义, 只需要加上简单的标志符即可. @infix 中置运算. 如+,-,*,/运算 @prefix 前置运算. 如- @postfix 后置运算. a++, a-- @ass ...

  6. 业界良心:Square开源Viewfinder,25万行代码全公布!

    http://www.csdn.net/article/2014-05-06/2819633-square-open-sources-viewfinder https://github.com/vie ...

  7. 【MyBatis学习笔记】

    [MyBatis学习笔记]系列之预备篇一:ant的下载与安装 [MyBatis学习笔记]系列之预备篇二:ant入门示例 [MyBatis学习笔记]系列之一:MyBatis入门示例 [MyBatis学习 ...

  8. Google提议使用Jsonnet来增强JSON

    Google开源了一门配置语言Jsonnet来取代JSON,它完全向后兼容并加入了一些新特性:注释.引用.算术运算.条件操作符,数组和对象内含,引入,函数,局部变量,继承等.Jsonnet程序被翻译为 ...

  9. Atlassian、Slack 以及 ChatOps 未来的前景如何?

    在大家纷纷谈起 DevOps 和 ChatOps 的时候,Martin Giles 也对 ChatOps 的前景有自己的看法.他曾是<经济学人>的记者,现在是 Wing Venture C ...

  10. Django自身的CBV列表

    慢慢就有感觉了.... 这个是可以快速开发很多东东,不过,类视图要求的积累还是有一些的.. ~~~~~~~~~~~~~ CBVs在功能上的可扩展性, 牺牲的是简单性, 一个CBV最多的时候拥有8个im ...