程序:
程序可以分为编辑、编译、链接、运行这几个步骤。而IDE(集成开发环境),软件厂商将编译器和链接器汇集在一起。
①在windows的vc6.0软件上开发一个helloworld程序,最终会生成的以.exe结尾的应用程序存放在硬盘里面,直接在本地运行,所以不需要复制到其他位置去运行
②在IDE的keil软件上面开发程序,最终会生成的以.hex结尾的二进制文件,后面要将程序烧写下载到51单片机芯片内部,从而和前者增加了“烧写下载”环节
嵌入式定义:
嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁
交叉编译模式:
嵌入式开发中使用的是交叉编译模式,所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码(在PC机上生成的代码可以在51上运行)
通常编译嵌入式程序的平台成为宿主机(如:PC的ubuntu系统,CPU架构为X86架构),运行嵌入式程序的平台成为目标机(如:JZ2440开发板,CPU架构为ARM架构)。两者属于不同的架构平台,从而属于交叉编译模式。在X86平台编辑和和编译器arm-linux-gcc编译ARM架构的程序,然后将程序下载开发板中(下载方式有:JTAG、USB、网络等多种方式),然后在开发板上运行该程序。
CPU架构平台:
PC一般采用intel(或amd)的CPU,而这些CPU被称为X86架构平台。由于CPU类型的不同,从而产生多个CPU架构,除了X86架构,还有ARM架构(一般的三星手机,华为手机等都采用ARM架构的CPU),mips架构(很多路由器,采用mtk联发科的cpu,而他们是mips架构),当然还有其他架构,如IBM公司的CPU是PowerPC,等等。
操作系统(Operating System,简称OS)
使用不同CPU组成的“计算机”(如PC,手机),肯定要在上面运行软件程序去控制他们的硬件设备,如控制网卡使其能上网,控制声卡使其能听到音乐,控制显卡使其能看到图像。
随着计算机技术的发展,将多个软件程序集合在一起形成了操作系统,如windows操作系统,安卓操作系统。在PC的x86架构平台,我们运行的是微软开发的windows操作系统,在cpu为arm架构的手机上,很多时候运行的是安卓操作系统/IOS/鸿蒙。
定义:
管理和控制计算机硬件与软件资源的计算机程序,是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。操作系统的主要功能是资源管理,程序控制和人机交互等。计算机系统的资源可分为设备资源和信息资源两大类。设备资源指的是组成计算机的硬件设备,如中央处理器,主存储器,磁盘存储器,打印机,磁带存储器,显示器,键盘输入设备和鼠标等。信息资源指的是存放于计算机内的各种数据,如文件,程序库,知识库,系统软件和应用软件等。操作系统位于底层硬件与用户之间,是两者沟通的桥梁。用户可以通过操作系统的用户界面,输入命令。操作系统则对命令进行解释,驱动硬件设备,实现用户要求。
在PC的x86架构平台,除了windows系统外,也可以运行其他操作系统如linux操作系统。目前linux操作系统除了在x86平台运行外,在arm架构平台、mips架构平台、powerpc等多个架构平台得到了广泛应用。随着linux的发展,出现了多个不同的版本,如常用的ubuntu系统、RedHat、CentOS系统、Fedora系统、Debian系统。
虚拟机:
由于windows系统在PC的特殊地位,在日常学习工作还无法替代windows操作系统。可以在windows上使用虚拟机软件来安装linux系统,然后通过虚拟机去启动linux系统,从而达到像控制一个软件一样去控制一个虚拟机的计算机。
因为windows和linux属于不同的操作系统,他们的操作系统内核肯定不同、访问磁盘文件的方式不同、磁盘文件的格式肯定也不同。可以同时在PC上安装多个操作系统,如双系统windows和linux系统,在BIOS时选择进入哪一个系统。而我们选择“虚拟机”的方式,但是日常生活中,已经习惯了windows操作系统的图形界面的操作,在windows上使用虚拟机软件来安装linux系统,然后通过虚拟机去启动linux系统,从而达到像控制一个软件一样去控制一个虚拟的计算机。常用的虚拟机软件有vmware和VirtualBox
linux命令
可以暂时简单理解linux命令就是调用其他程序然后执行特定的操作。
book@www.100ask.org:~$ gcc -o helloworld helloworld.c book@www.100ask.org:~$ ./helloworld helloworld
gcc -o helloworld helloworld.c 是调用编译器gcc来编译,编译得到的结果是名为helloworld的可执行文件,而./ helloworld是执行该可执行文件。
编辑:gedit
编译:gcc工具
链接:ld工具
最终文件: 可执行程序
运行: ./文件名
GCC:
gcc是linux系统下主要的编译软件,gcc的全称是GNU编译器套件(GNU Compiler Collection),除了可以编译c语言开发的程序外,还可以开发C++、Java等多个语言的程序。GCC的初衷是为GNU操作系统专门编写的一款编译器。
S3C2440:
s3c2440是三星公司基于arm9架构的soc,我们的初衷是在这一款芯片上运行linux操作系统,目前开发arm架构的linux程序,主流的开发工具肯定是基于linux环境的arm-linux-gcc编译器。arm-linux-gcc编译器与gcc编译器的命令使用方法几乎一样,区别在于两者编译的程序运行在不同架构平台。
编辑:运行在X86架构平台的ubuntu版本linux上的gedit或vi编辑器,或者在windows下编辑,然后传递到ubuntu版本linux上
编译:运行在X86架构平台的ubuntu版本linux上的arm-linux-gcc编译器
链接:运行在X86架构平台的ubuntu版本linux上的arm-linux-ld链接器,arm-linux-ld同arm-linux-gcc一起安装
烧写下载:JTAG(openjtag或easyopenjtag等工具)、USB(dnw软件,不推荐,win10下兼容性差)、网络高效方便(tftp,nfs)等多种方式
运行:运行在ARM架构平台的ARM9 的s3c2440开发板JZ2440上
s3c2440和PC的启动流程:
嵌入式开发流程:
从代码较少且较简单的裸机开发,直接通过寄存器去控制芯片的外围设备。从最少的代码去检查