全站数据
9 6 1 5 2 8 3

嵌入式系统开发过程中的常见问题与解决方法

一起学消防 | 教育先行,筑梦人生!         

嵌入式系统开发过程中常见问题与解决方法

嵌入式系统开发就是对于除了电脑之外的所有电子设备上操作系统的开发。下面是小编为大家搜索整理的关于嵌入式系统开发过程中常见问题与解决方法,欢迎参考学习,希望对大家有所帮助!

嵌入式系统开发过程中的常见问题与解决方法

1.Bootloader如何写入Flash?

初学者一般都会遇到如何将程序写入处理器的问题。对于不同的处理器,可以采用不同的方法。例如Intel的Xscale处理器可以使用Intel公司提供的JFlash工具烧写。对于具有JTAG调试工具软件的处理器,可以使用如下思路:编写一段程序,这段程序能将位于SDRAM/SRAM固定地址中的数据写入Flash中。烧写时,首先,将这段软件下载到SDRAM中,然后通过调试软件将要写入Flash的数据下载到SDRAM/SRAM的某个固定地址开始的缓冲区,然后通过调试器开始执行程序,将数据写入Flash。除此以外,网络上还提供了很多专用的写Flash的工具,开发者可以根据自己的需要选用。

2.什么是arm-elf-gcc?

arm-elf-gcc是一个交叉C语言编译器。我们在PC平台下编译程序,编译器运行的处理器同生成的代码将要运行的'处理器相同。但是,在PC机上编译ARM程序时,编译器运行的处理器同生成的代码运行的处理器不同,这种编译器叫做交叉编译器。其中的elf是指编译器生成的目标文件格式。(其实我们平时用的单片机编译器如GCC—AVR等已是交叉编译器了,我到现在才弄清楚什么是交叉编译器)

3.走了哪条编译路径?

系统程序和驱动程序往往包含很多的编译选项,很多选项都是在编译时通过命令行定义的,如果想知道编译的是那一段程序可以使用如下的方法:

#ifdefPLAT_AAA

#errorCodeforPlatformAAA

嵌入式系统开发过程中的常见问题与解决方法

#else

#errorCodeNOTforPlatformAAA

#endif

这样在编译的时候就知道,编译的是哪一条路经了。对于支持#pragmamessage(Iamhere")的编译器也可使用#pragmamessage预编译指令。

4.我怎么知道那段代码在那个文件中?

系统编程中经常需要使用在多个文件中搜索字符串,在windows平台下可以使用平台提供的多文件字符串搜索工具。在linux平台下,可以使用grep来搜索字符串。Grep的搜索功能十分强大,支持正则表达式搜索,熟练使用grep对于阅读系统和驱动程序代码是很有帮助的。

5.系统是从那个文件开始运行的?

对于WindowsCE系统,一般从WINCE420PLATFORMYourPlatformKERNELHAL目录的某个汇编文件中。对于Linux系统版本不同会存在一定差异,以arm处理器为例,一般会在linux2.4.xarcharmkernel的head-armv.S中。

嵌入式系统开发过程中的常见问题与解决方法

6.程序执行到了那里?

可以在程序中插入如下代码来实现

printf(Iamhere%s,%d",__FILE__,__LINE__);

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

免责声明:我们致力于保护作者版权,注重分享,被刊用文章【嵌入式系统开发过程中的常见问题与解决方法】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!

图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

猜你喜欢内容

更多推荐