当前位置:首页 » 编程软件 » 8051编译器linux

8051编译器linux

发布时间: 2023-01-15 10:00:43

⑴ 做智能小车,该用什么单片机开发板

做智能小车就是自动控制自动化专业范围的,这个专业的最基本的专业课不是C语言也不是汇编语言。而是《电子技术》(模拟电子技术和数字电子技术都要学),就是如何分析和设计电路的专业课。如果你连模拟电子都不懂,我给你个驱动小车电机的H桥电路图你也看不懂也不会用。而且做小车基本是做电机控制(直流电机伺服电机或者步进电机)这都是《电机与拖动》或者《电机学》里学到的。不要以为电机就是像小孩子玩的车模哪么简单。如果要测量并控制它的转速和方向,学问大了去了。
而且,看你的说明,你似乎对编程语言还不是太了解。C语言是基本上统一的,有标准的。而汇编则不是。汇编语言说白了就是微处理器(计算机用的CPU的学名)和微控制器(单片机、ARM、DSP等芯片的学名)芯片的指令集。而各个不同厂家的芯片有不同的内部结构,也就有不同的汇编语言。
比如说现在计算机用的汇编基本是x86架构的,学的最基础的就是8086芯片的汇编语言,其中它的数据传送指令有三个MOV、MOVSX、MOVZX。而8051架构的单片机,则有MOV、MOVX、MOVC三种。同样是单片机,但PIC架构的单片机的数据传送指令则是MOVWF、MOVF、MOVLW。看似一样,其实他们的区别是根据芯片内部结构决定的。
所以说,不要着急,一步一步来,先了解了微机原理,然后再学单片机原理。用什么开发板不重要,重要的你用什么单片机你学什么单片机,什么样的单片机就有什么样的开发板。 你现在读大二,要学什么单片机要看你们学校开什么单片机的课程,中国的大学基本上是学51系列架构的单片机。我上学的时候也是用51单片机做智能避障小车。而我没买过任何开发板,自己买的电容电阻万用板,自己焊的。这样做虽然弯路多点,但能从中学到很多东西。有的同学四年自动化专业毕业,焊电路板都不会……

linux系统能做什么

1.1 什么是Linux?
我们平时使用电脑打游戏、处理日常工作时,接触到最多的就是Windows操作系统,电脑如果不安装Windows系统是无法进行娱乐和工作的,所有的软件程序都必须运行在操作系统之上,但我们大众百姓常用的操作系统是个人版的,熟称桌面版系统。
和Windows一样,Linux也是一个操作系统软件,只不过它是企业级服务器操作系统(运营于企业服务器平台和手机移动端),Linux系统以安全、稳定、免费、高效、可自由更改源代码着称,这几个优秀的特点使得Linux系统大受欢迎,未来也会越来越火!
1.2 Linux系统发展前景如何?
众所周知,全球互联网及移动互联网仍在在高速发展,特别是物联网也开始发展,所有的公司要想生存都必须和互联网接轨(也要利用网络提供服务和赚钱),这样就使得整个互联网的发展与日俱增。
而Linux系统以安全、稳定、免费、高效、可自由更改源代码的特点占据了,1-2线城市98%以上的互联网企业以及移动互联网企业的系统应用。例如:网络、腾讯、阿里巴巴、淘宝网、京东商城、小米网、58同城、Sina、网易、滴滴打车、摩拜单车等都在大量使用Linux操作系统,国外的企业更是对Linux情有独钟,谷歌、Facebook、亚马逊等,毫不夸张地说,只要你能随口说出来想到的公司后台几乎都在使用Linux系统(包括Windows的厂商微软公司也在亲近Linux系统),我们使用的手机、平板等大多都在使用Linux系统(安卓版),苹果系列产品也都是类Linux系统(Unix),可见Linux系统的应用之广,可以预见未来至少是10年,Linux将是服务器端最火、应用最广的操作系统,没有之一,中国国家也在大力扶持Linux系统,例如江苏3000所中小学开始普及Linux系统。
为什么老男孩老师会对Linux的未来火爆程度这么肯定呢?这是因为Linux诞生的基因决定的:
Linux系统遵循GPL协议,即保证任何人有共享和修改自由Linux的自由,任何人有权取得、修改和重新发布Linux系统的源代码权利,但都必须同时给出具体更改的源代码,这个许可让全球的人都愿意为Linux贡献力量而不被某些人和机构据为己有,你说能不火么。
1.3 什么是Linux运维?
用一句话概括就是维护Linux系统以及系统之上的相关软件服务、程序代码(Java、Php、Python)和企业核心数据正常运行,使得企业能够优质、高效、快速的为企业的客户提供服务,从而盈利赚钱,随着企业增长,服务器和服务数量、要求也会成倍增加,对运维的能力和运维人员的数量都有更多的要求。在整个企业业务系统运转过程中,涉及到系统、网络、数据库存储、开发、安全、监控、架构等综合的技术于一身的技术,对运维人员的能力提出了更高的要求。

1.4企业为什么会需要Linux运维?
举个例子,大家使用淘宝、京东购物,使用网络、谷歌搜索,看起来网站界面很简单,实际上网站背后都是由数千到上万台、甚至10万台服务器来完成的,这也是企业为什么需要运维工程师的原因。
随着互联网和移动互联网的高速发展,企业用户数量曾几何级数增长(多达数百万计、千万计,微信和QQ的用户有近10亿),企业的应用及网站规模、数据量也越来越大,需要的服务器也越来越多,软件和程序架构也越来越复杂,例如:BAT中每家企业的服务器数量可能多达数万台到10万台,这么多的服务器、软件运行、网站架构、程序代码、数据安全维护都需要工程师维护,并且需求会越来越多。
1.5Linux运维岗位分类?
□硬件运维:硬件维护,如服务器、交换机、路由器、存储、负载均衡等设备。
□网络运维:网络设备维护:交换机、路由器以及办公局域网的维护。
□系统运维:基础设施的维护,侧重于系统和应用,也会涉及硬件网络。
□应用运维(SRE):企业业务研发环境、测试环境、线上环境等的维护和故障处理。
□监控运维:整个业务系统所有服务器集群的业务的监控和报警。
□数据库运维: 负责数据存储方案设计、数据库表设计、索引设计和SQL优化
□安全运维:安全扫描、渗透测试,安全工具、安全事件应急处理等。
□运维开发:开发运维工具和运维平台,以及自动化、智能化运维。
运维工程师还包括一些低端的岗位,例如:网络管理员、监控运维、IDC运维,值班运维,这些岗位是没前途的岗位,需要尽快提高改进。
摘自《老男孩Linux运维》书籍

⑶ ubuntu MCU 8051 IDE 生产的hex文件怎么下载到单片机里

mcu 8051 IDE的使用资料我也没有,软件自带有手册(英文)。但是,IDE生成的hex文件下载方法我倒是知道。我使用的是stcflash.py进行烧录的,配置挺简单的,网络一下就可以了,可能是因为读写串口信息需要管理员权限的缘故,不好集成到IDE里吧。所以,目前我能找到的,在linux下烧录单片机程序的最好方法了。

⑷ 请问linux系统能做什么

不是很同意一楼的意见,linux shell特别是bash,跟windows下的BAT根本不是一个层次的东西,shell要更强大的多。

一般的除了非得用图形的操作,比如图像处理,打游戏,其它的基本上都是可以用shell来执行的。

shell就像名字的含义一样,是linux的一个外壳,linux的内核提供引擎,各种应用程序就是各种配件,而shell就是给你一个完整的驾驶室,提供操纵所有这些功能的界面。

文件管理,程序执行,文字处理,网络配置,服务启停,都可以用shell。

如果有双机集群,那么必然需要有一个状态检测,这个检测的脚本,一般也都是一个shell的脚本。

如果是远程服务器的话,那基本上没人会通过图形方式登录,一般都是用ssh或者telnet登录进去,那就更是只能用shell了。

除非是用作桌面,否则linux一般都会起各种服务,这些服务的启动,停止和状态检测,也都是一个个的shell脚本,即使通过图形方式来操作,最终也是调用这些脚本。

学好shell,是做好网络管理员的基本功。

⑸ 如何学习嵌入式

作者:匿名用户
链接:https://www.hu.com/question/19688487/answer/32217959
来源:知乎
着作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

学习嵌入式系统,首先应该明确什么是嵌入式系统,否则费力去学,却不知所学为何物,岂不惘然?嵌入式系统的定义很多,这也是困扰嵌入式系统学习的一个因素。笔者根据自己开发和教学过程中的理解,以及对各种嵌入式系统的应用进行总结,提出了嵌入式系统的简单定义:嵌入式系统是嵌入式计算机系统的简称,这个定义突出嵌入式计算机系统和普通计算机系统的共性。下表列出了嵌入式系统的一些典型的应用:
智能机器人(S D R 4,火星登陆车)
娱乐和消费电子(Gameboy Advance,SonyPSP)
网络通信产品(Smartphone)
军用设备(军用PDA )
汽车(车载导航,自动驾驶,娱乐系统)
智能仪器(虚拟仪器)
安全防护(防火,防盗)
环境保护(探空气球)
银行和商业消费(ATM)
以火星登陆车为例来分析一下嵌入式系统的定义。火星登陆车虽然听起来感觉在技术上有些高不可测,但是本质就是嵌入式计算机系统的应用,其核心就是一个计算机系统,而这个计算机系统的组成同传统的计算机系统在本质上没有什么差别。两者的显着不同之处就在于,用于火星登陆车的计算机系统被安装到了火星登陆车上。当然,一个计算机系统能够被安装在火星登陆车上,是需要进行很多特殊设计的。但是从本质上讲,嵌入式系统的核心概念还在计算机系统。嵌入式系统学习的重点也在计算机系统上。一方面,学习者需要牢固掌握计算机系统本身的概念,更重要的是学习嵌入系统的开发过程同传统计算机系统开发过程的差别。这里需要指出的是,很多学习者本来就没有从事过完整计算机系统的开发,高校的教学是以程序设计为中心的,计算机系统的构成,操作系统的原理,编程语言等课程都是为了能够让学生更好的使用计算机系统进行程序设计,在现有的计算平台上来设计实现各种应用,学生一般没有机会学习一个完整的计算机系统是如何构建,并亲身参与到构建的每一个过程。而对于嵌入式系统而言,从事平台开发的人就是要亲自去开发出一个完整的计算机系统,这个过程包括
1. 需求分析
2 硬件设计
3 驱动程序
4 Bootloader & BSP (板级支持包)
5 操作系统的移植
6 应用程序的开发
7 性能检查
嵌入式系统教学的目的就是教会学生如何根据需求去建立满足某种特殊行业需求的嵌入式计算机系统。让学生学会如何构件硬件平台,进行硬件设计,选择能够满足应用要求的最佳的嵌入式操作系统,并完成Bootloader,BSP和驱动程序的编写,移植,调试等过程。为了满足行业需求,最终要在所建立的系统上编写调试相应的应用程序,并进行性能的测试和检查。

你是谁,你需要学习哪些东西?
如果你的工作只是需要在PC 机上编写一个图片浏览程序,那么你就没有必要去了解当系统收到一个ARP请求包后应该如何回应。同样的道理,嵌入式系统的学习也是有很多方面的。就嵌入式系统的设计和实现而言,基本上需要四种不同的工作:系统设计工作,硬件设计工作,驱动程序和操作系统移植工作和应用程序设计开发工作。
1.系统设计工作
在系统的设计阶段,系统分析师将根据需求确定系统的硬件的基本构成,根据系统的需求选择使用那种处理器,使用哪种操作系统,使用那些软件开发工具。系统分析师往往是较为完整的参与过嵌入式系统设计的全过程,对于系统应用的行业较为了解,对于嵌入式系统本身的开发流程十分清楚的人。
2.硬件设计工作

系统硬件设计人员需要根据系统分析师的设计结果,进行硬件原理图的设计。通常需要硬件设计人员熟悉嵌入式系统的硬件构成。硬件设计人员需要了解常用的嵌入式系统处理器,存储器(Flash,SDRAM),以太网MAC芯片,音频/视频编解码芯片,电源管理芯片,总线接口电路 (USB,PCI),液晶显示模块,可编程逻辑器件(FPGA/CPLD),无线网络通信模块(Bluetooth,WLAN,GPRS)等硬件电路构成元素的基本工作原理,连接使用方法,使用注意事项,基本调试方法等内容。在网络上能找到很多公司的评估板的原理图,对于这些原理图要仔细研究,摸清处理器同存储器,网卡,液晶模块等器件的连接方法和原因。通过对这些电路的研究,能够较快地了解整个嵌入式系统的构成,这些电路同实际产品中的电路虽有一定差别的,特别是对于手持设备,但这些差别不影响初学者学习嵌入式系统的硬件设计基本构成。
以上这些知识,往往需要较长时间的学习和积累,需要亲自参与实践的机会。对于刚刚接触嵌入式系统硬件开发的学生来讲,一般不可能全部了解这些知识,但也不会是通通一无所知。笔者结合自己开发和教学的经验认为:首先应该选定一款主流且较为简单的嵌入式系统处理器,比如基于ARM7TDMI 内核的AT91M40800,S3C44B0 等嵌入式系统处理器,学习32 位RISC处理器的编程模型,指令集。高校教学中,单片计算机课程一般以8051系列单片为核心讲解,由于现代32位处理器的结构和开发方式同8位单片机有着较大的差别,学习者还是需要花一点力气来研究以下32位处理器的。以ARM处理器为例,学习者就需要理解处理器的多种工作模式,备份寄存器,RISC 指令集的特点,MMU 和虚拟地址,中断处理过程等内容。在学习指令集的过程中,最好能够每学习几条指令,就使用这几条指令在模拟器上实验以下,观察处理器执行的结果。这个过程一方面是学习者对于指令本身的学习能够取得一个比较好的效果,另外也是对开发工具本身的一种学习。接着,就可以开始学习片上资源的使用和配置方法。这时就需要一个方便使用的开发板,学习者能够通过JTAG仿真器将开发板同调试PC机相连,进行程序的下载,调试。特别是要仔细研究系统的初始化过程和中断处理的过程。在开发过程中如果遇到问题,应自己分析问题产生的原因,通过分析缩小问题可能产生的范围,最终找到问题的所在。最重要的就是要保持一种解决问题的信心,面对困难如何处理,往往能够决定最终系统是否能够调试成功。然后,学习者可以开始仔细学习处理器同存储器的连接,存储空间的配置,各种外扩器件,如网卡,AC97声卡的工作原理和使用方法。嵌入式系统硬件设计中往往需要使用可编程器件,学习者还需要一定的时间来学习使用常用的可编程器件(CP L D / F P G A),常用的有Xilinx和Altera公司的产品。进行系统硬件原理图设计,就需要使用原理图设计的EDA工具,常用的EDA 原理图设计工具主要包括Cadence公司的Capture,Protel公司的Protel99SE等。接下来就可以参照评估板的电路图,根据系统的设计要求,开始进行原理图的绘制了。在原理图绘制过程中,一定要搞清评估板电路连接的原因,对于一时没有搞清楚的问题切不可蒙混过关。例如,有些处理器的地址线是以字节位单位的,而另一些处理器的地址线则是以两个字节为单位的,当连接16位的存储器的时候,切不可想当然的把处理器的A 0 直接连接到存储器的A 0 上面。另外,学生还应具有一定的PCB板图绘制能力,因为在现阶段,很多公司还不能完全把原理图的设计工作和PCB 的绘制工作分开,往往要求硬件设计人员既能进行原理图设计又能进行板图设计。即使是PCB设计和原理图设计分开的公司,也需要原理图设计者能为PCB 的设计者对于不同的信号提出布板要求。
3.驱动程序和操作系统移植工作
现代嵌入式系统的开发同传统8位单片机系统的开发相比,一个显着的区别就是嵌入式操作系统的广泛使用。在拿到焊接完毕的电路板,并进行基本的测试后,就要进行驱动程序和操作系统的移植工作了。首先要进行的Bootloader的编写和移植工作。Bootloader相当于PC系统的BIOS。对于有些嵌入式操作系统,如uc/OSII没有bootloader同样可以开发调试。但是对于WindowsCE和嵌入式linux系统而言Bootloader就是必须的了。本文以Windows CE 为例,做一个简要的说明。
Windows CE 系统的移植工作主要就是BSP(板级支持包)的开发过程。BSP将具体的硬件差异同操作系统的核心隔离开来,主要由Bootloaer ,OAL(OEMAbstraction Layer)和设备驱动程序三部分组成。WindowsCE系统中Bootloader叫做Eboot。Eboot被写入系统的引导Flash。系统启动时运行Eboot,完成通过网卡将调试PC 机中WindowsCE 操作系统映像下载到目标系统的SDRAM中并开始执行的功能。对于一个系统移植人员,首先需要阅读文档,了解WindowsCE系统Bootloader和BSP的基本概念和开发过程。(呵,还要做这工作啊,我还没想到(初学^_^))Windows CE的开发系统Platform Builder提供了详细的文档和例程,开发人员需要仔细的阅读文档和例程。搞清楚各个函数之间的调用关系。在开发过程中的一个重要的步骤就是打通串口,使得目标板能够通过PC机串口向调试PC 机发送数据。由于ARM系统的仿真器比较昂贵,而且操作系统的调试往往不使用JTAG调试器进行单步调试。所以能从串口观察程序的执行过程和结果对于调试就显得十分重要了。串口打通之后一个比较棘手的问题就是网卡芯片的调试。刚刚接触嵌入式系统开发的人往往没有直接在寄存器级上使用网卡芯片的经验,而网卡芯片的说明一般都较为简短,这就要求开发者学习一些以太网的基础知识,对以太网的MAC 层有一个基本的认识。另外,各种网络调试(抓包)工具的使用也能大大降低系统调试的难度。系统的OAL需要根据具体硬件的不同做出相应的修改,这个部分可参照文档进行,在调试过程中根据串口的信息分析出错的地方。要充分发挥跨文件字符串搜索工具的功能,在浩如烟海的源文件中找到出错的位置。当然,随着开发者对系统文件目录结构的熟悉和了解,错误定位的速度会不断加快。WindowsCE 的驱动程序相对而言是比较好写的。
4.应用程序的开发
嵌入式系统的应用程序开发同在PC 机上开发应用程序的区别不是很大。对于Windows CE系统而言,Microsoft已经提供了较为完善的开发工具。特别是.NET Compact work的使用,使得基于Windows CE.NETCompactwork的应用程序有了跨平台性。开发人员可以使用Windows 的C# 语言直接在PC 上进行http://CE.NET应用程序的开发和模拟调试,也可将目标系统同PC 机相连,进行联机调试。现在有很多系统支持J2ME(JAVA的嵌入式系统版本) ,这使得JAVA 在嵌入式系统应用开发中占有较大的优势。另外,作为专业的嵌入式系统软件开发人员,还需要充分了解面向对象技术和设计模式等方面的知识,当然作为初学者可以先不深入研究这方面的内容。
常用嵌入式系统处理器和操作系统
处理器
常用嵌入式系统处理器主要包括ARM 处理器,Power PC 处理器,基于MIPS 内核的嵌入式处理器,软核处理器(如Altera 的Nios和Xilinx的MicroBlaze等)和DSP(数字信号处理器)等。
ARM 处理器的主要特点是具有较高的性能功耗比。ARM处理器被广泛的应用在手机,PDA等领域,其中较为着名的有Intel 公司生产的基于ARM 内核的XScale系列处理器。由于所有公司生产的基于ARM内核的处理器具有相同的编程模型,在手持和电池供电的系统中,基于ARM的嵌入式系统处理器往往被首先选用。PowerPC(简称PPC)处理器具有较强的运算性能和数据吞吐能力,在网络和数据通信领域基于PPC的嵌入式系统处理器有着广泛的应用。其中Motorola公司生产的MPC860/MPC8260被大量地应用在嵌入式网络产品中。MIPS 处理器的特点表现在十分强大的处理能力上。作为高性能处理器,MIPS处理器适用于网络、企业及高级消费类电子应用,特别是在机顶盒系统中,MIPS处理器具有较高的市场占有率。随着可编程器件的规模不断扩大,使得人们能够根据需要定制处理器,并方便的将针对某种特殊应用定制的处理器方便的在可编程器件内部实现。除了处理器外,计算机系统还需要许多其他构成部分,比如在多通道媒体数据处理系统中,经常需要使用可编程器件来实现高速的数据处理功能,使用软核DSP来实现复杂的数字信号处理算法,同时还需要处理器进行事务处理,软核处理器将可编程器件,DSP同处理器结合在一起,为系统级设计提供了极大的灵活性。DSP(数字信号处理器)有别于通用处理器,集中表现在其强大的数字信号处理能力上。在DSP 内部提供了硬件乘累加器,处理器在设计上对于特殊的寻址方式做了优化,一些DSP 还支持零耗循环(Zero OverheadLoop)。为了方便嵌入式系统设计,主流DSP 一般也都提供了丰富的外设。特别值得一提的是ADI 公司的Blackfin 系列DSP和TI 公司的DM64X系列DSP,两种处理器都提供了丰富的片上外设,非常适用嵌入式系统应用。
操作系统
http://WindowCE.NET/5.0
作为Microsoft的产品,WindowCE.NE/5.0提供了功能完备的平台开发工具Platform Builder和应用开发工具Embedded Visual C++/Visual Studio 2003。WindowsCE由于拥有广大使用者所熟悉的windows界面,系统提供了众多驱动程序,并且有完备的文档支持。对于应用开发而言,熟悉Windows系统开发的程序员很容易转到WindowsCE 应用程序的开发。Windows CE将会是一个非常有前途的嵌入式操作系统。
VxWorks
VxWorks是由Windriver(风河)公司出品的嵌入式实时操作系统,大名鼎鼎的火星登陆车就是使用了VxWorks。Windriver为VxWorks提供了集成开发环境tornado。
υC/OSII
υC/OS是由Jean Labrosse设计编写的开放源代码的嵌入式实时操作系统,笔者最早接触的嵌入式操作系统就是它。阅读并深入理解υC/OS的源代码对于理解实时系统是大有裨益的。
ARM Linux
ARM linux是由Russell King和其他开发者开发移植的用于ARM 处理器的linux操作系统。ARM Linux系统在GNU GPL下发布。
υCLinux
υClinux 是适用于没有MMU 的嵌入式处理的LinuxOS 版本。υ Clinux 同样在GNU GPL发布。
嵌入式系统开发过程中的常见问题和解决方法
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-TimeKernel,Second Edition这本书是笔者接触嵌入式实时系统的入门书,在国内能够买到中文版。这本书较为清楚地讲述了实时系统的概念,各个组成部分的工作原理,特别是公开了实时系统内核的源代码,仔细研究定会受益匪浅。有个小的提示,对于初学者,这本书可以先不看第一章,直接从第二章看起。
Abraham Silberschatz, Peter Baer Galvin,GregGagne Operating System Concepts笔者在教学过程中发现,无论是计算机还是电子工程专业都有很多学生对于操作系统的基本概念都没有搞清,很少有学生有完整的系统编程经验。Operating System Concepts这本书对操作系统的概念讲述只能用经典来形容。对于嵌入式系统有兴趣深入研究的同学,首先要把基础打好,这本书就成了必读之物了。
Andrew S. Tanenbaum Computer Networks 提起Andrew S. Tanenbaum 学习计算机的同学一定都知道OPERATINGSYSTEMs:Designand
Implementation这本书,笔者对于Tanenbaum这样的教授由衷佩服。网络协议栈是嵌入式系统中的支柱性组成部分。愿意致力于网络深层技术研究的同学,这本书将为你们建立一个坚实的网络基础。
Karim Yaghmour Building Embedded Linux Systems本书详尽的介绍了嵌入式linux系统的组成,基本概念和如何去建立各个部分。全书篇幅较小,可谓短小精悍。即可以作为嵌入式linux系统的入门读物,又是开发过程各个部分的指南。
Advanced RISC Machines Ltd (ARM) ARM7 TDMI DataSheet Advanced RISC Machines Ltd (ARM) ARM920TTechnical Reference Manual学习嵌入式系统不了解当前应用最广泛的嵌入式处理器怎么行?ARM7 TDMI 的 data sheet是学习ARM编程模型,指令集的好东西。在嵌入式系统中,MMU(内存管理单元)是很重要的部分,又是较难理解和掌握的部分。ARM920TTechnical Reference Manual 正好可以帮你讲解这方面的内容。
Perter Van Der LinDen Expert C Programming嵌入式系统级编程最常用的语言还是C 。很多同学都自认为自己的C语言学的很好,那好,就看看这本书吧,找找自己和Experts差距。
嵌入式开发与桌面开发既有不同,又有非常大的联系,而且十分注重实际操作能力。搞桌面开发的人在一开始接触嵌入式的时候,通常转换不过来,这主要体现在定位上。如文中所说,你是谁,你要做什么?我对硬件的了解仅限于编程领域,PCB设计一窍不通,但并不能说你不懂硬件就不能从事嵌入式开发。一个系统的开发设计方方面面,在自己感兴趣和熟悉的领域做出自己的贡献才是最主要的。
1。硬件设计: 需要有硬件设计的经验,对各种嵌入式器件有很好的了解。
2。系统移植:需要汇编经验,操作系统原理以及底层驱动的了解
3。应用程序:需要桌面编程经验

⑹ 关于ARM与8051的区别

  1. 8051是一种8位元的单芯片微控制器,属于MCS-51单芯片的一种,8051单芯片是同步式的顺序逻辑系统,整个系统的工作完全是依赖系统内部的时脉信号,用以来产生各种动作周期及同步信号。在8051单片机中已内建时钟产生器,在使用时只需接上石英晶体谐振器(或其它振荡子)及电容,就可以让系统产生正确的时钟信号。

  2. ARM相比8051:体积小、低功耗、低成本、高性能;支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;大量使用寄存器,指令执行速度更快;大多数数据操作都在寄存器中完成;寻址方式灵活简单,执行效率高;指令长度固定。并且具备,用户模式(usr) 、系统模式(sys) 、中断模式(fiq) 支持高速数据传输或通道处理管理模式(svc) 操作系统保护模式数据访问、终止模式(abt) 用于虚拟存储器及存储器保护、中断模式(irq) 用于通用的中断处理未定义指令、终止模式(und) 支持硬件协处理器的软件仿真

  3. 知识延伸:8051结构

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:645
制作脚本网站 发布:2025-10-20 08:17:34 浏览:936
python中的init方法 发布:2025-10-20 08:17:33 浏览:632
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:821
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:731
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1066
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:299
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:160
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:852
python股票数据获取 发布:2025-10-20 07:39:44 浏览:763