Deprecated: Creation of dynamic property db::$querynum is deprecated in /www/wwwroot/www.drnzc.com/inc/func.php on line 1413

Deprecated: Creation of dynamic property db::$database is deprecated in /www/wwwroot/www.drnzc.com/inc/func.php on line 1414

Deprecated: Creation of dynamic property db::$Stmt is deprecated in /www/wwwroot/www.drnzc.com/inc/func.php on line 1453

Deprecated: Creation of dynamic property db::$Sql is deprecated in /www/wwwroot/www.drnzc.com/inc/func.php on line 1454
嵌入式Linux: uClinux操作体系移植_雷竞技官网网站|官方APP下载iOS



About us雷竞技iOS官方

嵌入式Linux: uClinux操作体系移植

来源自:雷电竞下载APP官网    点击数:1   发布时间:2025-02-05 02:45:39

  这个英文单词中u表明Micro,小的意思,C表明Control,操控的意思,所以

  uclinux是一个源码敞开的操作体系,面向没有MMU(MemoryManagementUnit)的硬件渠道。它是linux的一个变种,首要的不同之处在于两者的内存管理机制和进程调度管理机制,一起为了习惯嵌入式运用的需求,它的选用了romfs文件体系,并对linux上的c言语库glibc做了简化。

  uclinux操作体系源码绝大部分是用c言语开发的,有一些与硬件直接相关的代码则用特定于某一CPU体系结构的汇编来完结。这些源码只能用GNU的gcc编译东西来进行编译、链接。

  为了在PC上编译得到运转于方针CPU上的操作体系内核,还必定得装置一个适宜的穿插编译器。Gcc供给了现成的针对MIPS、ARM、M68K、Sharc、PowerPC的穿插编译器。假设没有现成的穿插编译器,则需求自行规划。GNU网站供给了一些怎么开发新的穿插编译器的文章。开发一个新的编译器,一般要如下几个过程:

  (1)、编写机器描绘脚本。选用gcc的RTL(RegisterTansferLanguage)言语描绘针对某一CPU体系结构的机器指令与寻址方法、CPU浮点解决方法、endianess、c言语中各种数据类型的位宽、寄存器的个数和运用规矩、仓库和函数调用规矩等体系结构的细节。

  (2)、规划代码生成器。Gcc在对c言语源文件进行了词法和语法分析后,将发生一种中心格局文件(intermediaterepresentation)。为了把这种中心格局文件转化为针对详细CPU体系结构的机器码,需求自行规划一个代码生成器。

  SRAM、SDRAM等存储设备归于挥发性的存储器,掉电今后其间的内容就会悉数丢掉,所以有必要把操作体系的内核镜像存放在Flash等不挥发性存储介质上。可是操作体系在运转时,需求动态的创立一些如数据段、仓库、页表(针对运用虚拟地址的操作体系)等内容,所以要在RAM中运转操作体系。因而,就需求一个引导程序把操作体系的内核镜像从Flash存储器拷贝到RAM中,然后再从RAM中履行操作体系的内核。Bootloader就应该完结这样一种功用的程序。

  从本质上来讲,bootloader不归于操作体系内核。它选用汇编言语编写,因而针对不同的cpu体系结构,这一部分代码不具有可移植性。在移植操作体系时,这部分代码有必要加以改写。

  。将操作体系内核从flash拷贝到sdram中,如果是紧缩格局的内核,还要将之解紧缩。

  。改写体系的memorymap,原先flash开端地址映射为0地址,这时需求将RAM的开端地址映射为0.

  。设置仓库指针并将bss段清零。将来履行c言语程序和调用子函数时要用到。

  bootloader程序履行完上述的各项作业后,经过一条跳转指令,转而履行ini目录下c言语源文件main.c中的函数start_kernel()。由于在此之前bootloader现已创立好一个初始化环境,

  c函数能开端履行了。整个操作体系内核的初始化作业从这儿才算是真实开端。这个函数的长度比较短,代码如下:asmlinkagevoid__initstart_kernel(void)