导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→嵌入式系统开发过程中的常见问题和解决方法,信盈达资深工程师开

* 99229: 嵌入式系统开发过程中的常见问题和解决方法,信盈达资深工程师开课了

   eduann 
eduann发表的帖子 

 嵌入式系统开发过程中的常见问题和解决方法,信盈达资深工程师开课了

 Bootloader如何写入Flash ?
         初学者一般都会遇到如何将程序写入处理器的问题。对于不同的处理器,可以采用不同的方法。例如Intel的Xscale处理器可以使用Intel公司提供的JFlash工具烧写。对于具有JTAG调试工具软件的处理器,可以使用如下思路:编写一段程序,这段程序能将位于SDRAM/SRAM 固定地址中的数据写入Flash中。烧写时,首先,将这段软件下载到SDRAM 中,然后通过调试软件将要写入Flash的数据下载到SDRAM/SRAM的某个固定地址开始的缓冲区,然后通过调试器开始执行程序,将数据写入Flash。除此以外,网络上还提供了很多专用的写Flash的工具,开发者可以根据自己的需要选用。(现在明白了我在学的那个BF533为什么先下个flashProgramer.dxe先了)
       什么是arm-elf-gcc?
       arm-elf-gcc是一个交叉C语言编译器。我们在PC平台下编译程序,编译器运行的处理器同生成的代码将要运行的处理器相同。但是,在PC 
机上编译ARM程序时,编译器运行的处理器同生成的代码运行的处理器不同,这种编译器叫做交叉编译器。其中的elf是指编译器生成的目标文件格式。(其实我们平时用的单片机编译器如GCC—AVR等已是交叉编译器了,我到现在才弄清楚什么是交叉编译器)
      走了哪条编译路径?
      系统程序和驱动程序往往包含很多的编译选项,很多选项都是在编译时通过命令行定义的,如果想知道编译的是那一段程序可以使用如下的方法:
                  #ifdef PLAT_AAA
                  #error Code for Platform AAA

                  #else
                  #error Code NOT for Platform AAA

                  #endif

这样在编译的时候就知道,编译的是哪一条路经了。对于支持#pragma message( “I am here”)的编译器也可使用#pragma message预编译指令。
       我怎么知道那段代码在那个文件中?
       系统编程中经常需要使用在多个文件中搜索字符串,在windows平台下可以使用平台提供的多文件字符串搜索工具。在linux平台下,可以使用grep来搜索字符串。Grep的搜索功能十分强大,支持正则表达式搜索,熟练使用grep对于阅读系统和驱动程序代码是很有帮助的。
       系统是从那个文件开始运行的?
        对于Windows CE系统,一般从WINCE420\PLATFORM\YourPlatform\KERNEL\HAL目录的某个汇编文件中。对于Linux系统版本不同会存在一定差异,以arm处理器为例,一般会在linux2.4.x\arch\arm\kernel的head-armv.S中。
       程序执行到了那里?
       可以在程序中插入如下代码来实现
                  printf( “I am here %s, %d\n”,__FILE__, __LINE__);

代码将打出printf语句所在的文件名和行号。

       推荐书目
       Jean J.Labrosse MicroC/OS-II The Real-Time Kernel,Second Edition这本书是笔者接触嵌入式实时系统的入门书,在国内能够买到中文版。这本书较为清楚地讲述了实时系统的概念,各个组成部分的工作原理,特别是公开了实时系统内核的源代码,仔细研究定会受益匪浅。有个小的提示,对于初学者,这本书可以先不看第一章,直接从第二章看起。
       Abraham Silberschatz, Peter Baer Galvin,Greg Gagne Operating System Concepts笔者在教学过程中发现,无论是计算机还是电子工程专业都有很多学生对于操作系统的基本概念都没有搞清,很少有学生有完整的系统编程经验。Operating System Concepts这本书对操作系统的概念讲述只能用经典来形容。对于嵌入式系统有兴趣深入研究的同学,首先要把基础打好,这本书就成了必读之物了。
      Andrew S. Tanenbaum Computer Networks 提起Andrew S. Tanenbaum 学习计算机的同学一定都知道OPERATINGSYSTEMs:Design and 
Implementation这本书,笔者对于Tanenbaum这样的教授由衷佩服。网络协议栈是嵌入式系统中的支柱性组成部分。愿意致力于网络深层技术研究的同学,这本书将为你们建立一个坚实的网络基础。
      Karim Yaghmour Building Embedded Linux Systems本书详尽的介绍了嵌入式linux系统的组成,基本概念和如何去建立各个部分。全书篇幅较小,可谓短小精悍。即可以作为嵌入式linux系统的入门读物,又是开发过程各个部分的指南。
      Advanced RISC Machines Ltd (ARM) ARM7 TDMI Data Sheet     Advanced RISC Machines Ltd (ARM) ARM920T Technical Reference Manual学习嵌入式系统不了解当前应用最广泛的嵌入式处理器怎么行? ARM7 TDMI 的 data  sheet是学习ARM编程模型,指令集的好东西。在嵌入式系统中,MMU(内存管理单元)是很重要的部分,又是较难理解和掌握的部分。ARM920T Technical Reference Manual 正好可以帮你讲解这方面的内容。
      Perter Van Der LinDen Expert C Programming嵌入式系统级编程最常用的语言还是C 。很多同学都自认为自己的C语言学的很好,那好,就看看这本书吧,找找自己和Experts差距。
深圳信盈达嵌入式单片机实训基地给你最实战的项目技术学习指导
详情可联系:电话13926586805   QQ 122330119

发表时间:2013年7月10日17:09:59

  
回复该帖

本主题共有 8 帖,分页:>>>>>该主题的所有内容[8]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  99630.[详细]坚决同意
摘要:坚决支持  学习中  好好加油......(26字)
- [eduann][179次] 2013年7月22日

  99916.[详细]GOGO
摘要:深圳/郑州信盈达嵌入式、单片机、ARM、MIPS、FPGA、Android培训! 免费试听,满意后给您量身定制课程(包学会),快速提高您的技能! 教学特色:名师督学+工程师指导;项目案列解析+实际解决方案! 详......(228字)
- [eduann][217次] 2013年8月5日

  103135.[详细]好好学习
摘要:2013年开始倒计时!年底回馈,信盈达嵌入式、单片机培训课程报名即送开发板,给自己的学习来点实际的动手工具,行动吧!民治中心免费学习C语言10个名额正火热预定中。。。联系安老师13926586805 QQ122330119......(192字)
- [eduann][232次] 2013年12月6日

[上一篇帖子]:如何学习嵌入式?嵌入式学习又从何下手?学习嵌入式的途径方法是?[转帖]  &nbs
[下一篇帖子]:信盈达嵌入式培训高级工程师传授linux新方法在Linux操作系统中,有一项特殊的功能——初始化内存