1、嵌入式linux开发有以下几个步骤。在Linux系统下搭建ARM-Linux交叉编译环境,这样你在PC上编译的程序才能在arm上运行。我是在ubuntu04下搭建的,直接用arm-linux-gcc解压,再写环境变量就可以了。还可以自己编译,但很复杂。移植Bootloader启动程序。
2、学会写简单的makefile 编一应用程序,可以用makefile跑起来 学会写驱动的makefile 写一简单char驱动,makefile编译通过,可以insmod, lsmod, rmmod. 在驱动的init函数里打印hello world, insmod后应该能够通过dmesg看到输出。
3、引导加载程序(Bootloader):这是嵌入式Linux系统启动的第一个阶段。Bootloader的主要任务是初始化硬件设备、设置内存等,为接下来加载Linux内核做好准备。常见的Bootloader有U-Boot、GRUB等。以U-Boot为例,它首先会执行一些硬件的初始化操作,如设置时钟、初始化SDRAM等。
4、流程:明确需求-分析硬件软件可行性(速度,内存,算法等)-硬件选型-原理图设计,layout,制板(同时软件功能模块可开始)- 开发BSP(即所谓的启动程序,各硬件芯片的driver等)-放操作系统上去(如果需要的话)-软件模块加入-测试,改bug-生产-over。
1、硬件平台:比如主芯片ARM,以及以太网,USB,液晶屏驱动电路等等。外围设备:比如键盘,鼠标,摄像头,液晶屏。系统:Linux其实嵌入式linux只是精简的pclinux,删除了一些冗余的东西而已。
2、ARM-Linux嵌入式系统的基本组成:bootloader:相当于PC机的 BIOS,用于引导基本操作系统。基本 Linux 系统,作用就不用多说了,就是应用软件的基础平台。文件系统,作用就是用来管理嵌入式系统的存储空间。
3、典型的嵌入式系统,软件部分从下到上,分别是boot,kernel,rootfs,fsimg和上层应用。起到的作用分别是,引导内核,启动内核,挂载根文件系统,挂载实际文件系统,开启上层应用主循环。你问的这些问题,每一点都可以单独拿出来,长篇大论的讲很久了。建议去网上先看相关的资料。
一:C语言 嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,通过大量编程实例重点理解C语言的基础编程以及高级编程知识。包括:基本数据类型、数组、指针、结构体、链表、文件操作、队列、栈等。
嵌入式软件工程师平时的工作就是负责嵌入式软件系统的规划、设计、编码、测试等工作。嵌入式分为操作系统和硬件两个方面,就业的方向更广、更深,就业机会和入职待遇比普通软件工程师好。
嵌入式Linux开发从下到上分为:嵌入式硬件开发、嵌入式驱动开发、嵌入式系统开发、嵌入式软件开发。嵌入式硬件开发:熟悉电路等知识,非常熟悉各种常用元器件,掌握模拟电路和数字电路设计的开发能力。
ARM-Linux嵌入式系统的基本组成:bootloader:BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。
Linux做嵌入式的优势,首先,Linux是开放源代码的,不存在黑箱技术,遍布全球的众多Linux爱好者又是Linux开发者的强大技术支持;其次,Linux的内核小、效率高,内核的更新速度很快;第三,Linux是免费的OS,在价格上极具竞争力。
简单来说嵌入式操作系统就是比如一间房屋,里面有2间房子,2间房间上都有门,都安装有内核文件,这样的操作系统叫做嵌入式操作系统。
在不同的目标体系结构下(x86,ARM,PowerPC etc.),由于汇编指令集的不同,同一段代码利用不同的编译器和库文件生成的可执行代码是不同的。不同体系的Linux其开发工具是不同的。
首先当然时系统的架构和cpu不一样了,嵌入式一般arm类的,电脑的是x86,mac之类的。这些硬件上的差异,所以在上面运行的linux系统也是不一样的:首先,启动方式不一样。其次linux内核也是根据各自的架构来编译成的。再有就是linux下的根文件系统,里面运行的模块,和一些环境库也都是不同的。