嵌入式系统无疑是当前热门和有发展前景的IT应用领域之一,特别是随着消费家电的智能化,嵌入式更显重要性,嵌入式系统开发简单来讲就是对电脑之外所有电子设备上的操作系统的开发,嵌入式系统开发的范围很广,开发对象也有很多,接下来先简单了解下嵌入式系统开发流程中常见的几大问题:
1、Bootloader如何写入Flash
初学者一般都会遇到如何将程序写入处理器的问题。对于不同的处理器,可以采用不同的方法。例如Intel的Xscale处理器可以使用Intel公司提供的JFlash工具烧写。对于具有JTAG调试工具软件的处理器,可以使用如下思路:编写一段程序,这段程序能将位于SDRAM/SRAM 固定地址中的数据写入Flash中。
2、什么是arm-elf-gccarm-elf-gcc是一个交叉C语言编译器。我们在PC平台下编译程序,编译器运行的处理器同生成的代码将要运行的处理器相同。但是,在PC机上编译ARM程序时,编译器运行的处理器同生成的代码运行的处理器不同,这种编译器叫做交叉编译器,其中的elf是指编译器生成的目标文件格式。
3、走了哪条编译路径
系统程序和驱动程序往往包含很多的编译选项,很多选项都是在编译时通过命令行定义的,如果想知道编译的是那一段程序可以使用如下的方法:
#ifdef PLAT_AAA
#error Code for Platform AAA
#else
#error Code NOT for Platform AAA
#endif
这样在编译的时候就知道,编译的是哪一条路经了。对于支持#pragma message( “I am here”)的编译器也可使用#pragma message预编译指令。
4、我怎么知道那段代码在那个文件中
系统编程中经常需要使用在多个文件中搜索字符串,在windows平台下可以使用平台提供的多文件字符串搜索工具。在linux平台下,可以使用grep来搜索字符串。Grep的搜索功能十分强大,支持正则表达式搜索,熟练使用grep对于阅读系统和驱动程序代码是很有帮助的。
5、系统是从那个文件开始运行的
对于Windows CE系统,一般从WINCE420PLATFORMYourPlatformKERNELHAL目录的某个汇编文件中。对于Linux系统版本不同会存在一定差异,以arm处理器为例,一般会在linux2.4.xarcharmkernel的head-armv.S中。
6、程序执行到了那里
可以在程序中插入如下代码来实现
printf( “I am here %s, %dn”,__FILE__, __LINE__);
代码将打出printf语句所在的文件名和行号。
嵌入式开发与桌面开发既有不同,又有非常大的联系,以上六大嵌入式系统开发流程中常见的问题就简单介绍这些了,这些常见问题在很多嵌入式工程师在开发过程中都会遇到。
转载于:https://blog.51cto.com/14033587/2323189