- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式Linux系统研究及其在串口通信中应用
嵌入式Linux系统研究及其在串口通信中应用
1引言
Linux 内核进行修改和剪裁以满足系统的需求,是移植技术中的关键。本文主要研究了如何对 Linux 操作系统进行修改和剪裁,并在开发板上实现了串口通信。
2嵌入式 Linux 操作系统分析
Linux系统内核的分析:Linux 系统使用了单一内核结构,即操作系统中所有的系统相关功能都被封装在内核中。程序通过一套称作系统调用(system call)的界面访问内核结构。在 Linux中,可以动态装入和卸载内核中的部分模块。Linux 内核由5个 部分组成:进程管理、内存管理、文件系统管理、进程间通信和网络接口。
典型的嵌入式 Linux 操作系统有2类:第一类如μCLinux,其是为了支持没有MMU(内存管理单元)的处理器而对标准Linux作出的修正。μCLinux保留了Linux的大部分优点:稳定良好的移植性、优秀的网络功能、支持各种文件系统以及标准丰富的API等。第二类是将Linux 开发成实时系统尤其是硬(firm)实时系统,应用于一些关键的控制场合,如 RTLinux。
3基于 ARM 平台的
嵌入式 Linux 系统的研究
3.1 嵌入式平台及开发环境的建立
HFRK2410开发板是基于S3C2410高性能ARM处理器的嵌入开发平台,CPU采用S3C2410ARM920T。开发过程为: Linux下建立交叉编译器,在Windows操作系统中用ADS开发工具实现启动程序,在Linux操作系统下,用交叉编译器进行Linux内核、库函数及应用程序的编译。
3.2 BootLoader代码分析
嵌入式系统中,Boot Loader是在操作系统内核或用户应用程序运行之前运行一段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准备好正确的环境。大多数Boot Loader都包含2种不同的操作模式:启动加载(Boot Loading)模式和下载(Down Loading)模式。
启动加载模式:也称为“自主”模式。即Boot Loader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。这种模式是Boot Loader的正常工作模式,在嵌入式产品发布的时候,BootLoader必须工作在这种模式下。
下载模式:在这种模式下,目标机上的BootLoader将通过串口连接或网络连接等通信手段从主机下载文件。从主机下载的文件通常首先被BootLoader保存到目标机的RAM中,然后再被BootLoader写到目标机上的闪存(FLASH)类固态存储设备中。BootLoader的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用BootLoader的这种工作模式。工作于这种模式下的BootLoader通常都会向其终端用户提供一个简单的命令行接口。
3.3 内核的修改和剪裁
内核的初始化分为以下几个阶段:
(1) 内核的入口stext
stext是BootLoader所调用的内核入口,从stext进入后,将完成一些针对程序运行环境的建立。
(2) 内核的初始化函数start_kernel
start_kernel是内核初始化的主体。在调用这个函数的时候,系统已经有了一个初始化的页目录表和堆栈。
(3) 内核的初始化线程init
在start_kernel中,通过创建了一个内核进程来执行init函数,进行初始化。
(4) 系统的初试化程序
修改内核启动部分源代码:主要是修改makefile文件,以及加上NAND Flash的支持和mtd分区表的填写。目的是指定目标CPU的体系结构为ARM及交叉编译器前缀为arm-linux-,并在内核启动时能初始化NAND Flash。
修改的步骤为:
(1) 下载并解压Linux内核
(2) 修改makefile文件
#ARCH?=$(SUBARCH)修改为ARCH:=arm。
(3) 修改相关的文件
①修改arch\arm\mach-s3c2410\devs.c文件
增加头文件定义:
#include
#include
#include
增加NAND Flash分区信息,将分区信息和bootloader程序一致。
②修改arch\arm\mach-s3c2410\mach-smdk2410.c文件
做完以上修改再经内核编译后就可以在hfrk24
您可能关注的文档
- 山东省招远市加快工业经济发展路径探究.doc
- 山东省推动战略新兴产业共性技术开发现状问题与对策.doc
- 山东省政府引导企业科技投入动态模拟研究.doc
- 山东省文教科卫支出与经济增长关系实证分析.doc
- 山东省新农村建设主要模式及经验分析.doc
- 山东省新型城镇化中新型度评价研究.doc
- 山东省旅游业假期效应实证研究.doc
- 山东省新农村建设面临问题及对策建议.doc
- 山东省旅游业实施创新驱动战略对策研究.doc
- 山东省普惠金融发展水平测度研究.doc
- 云南师大附中2026届高考适应性月考卷(五)英语.doc
- 云南师大附中2026届高考适应性月考卷(五)政治答案.doc
- 浙江省金丽衢十二校2025学年高三第一次联考生物卷-2512金丽衢十二校.doc
- 浙江省强基联盟2025年12月高三联考地理 --浙江强基联盟12月高三联考.doc
- 浙江省强基联盟2025年12月高三联考化学试题卷答案.doc
- 浙江省强基联盟2025年12月高三联考化学.doc
- 江西省2026届高三上学期11月联考(JX)生物答案.doc
- 浙江省强基联盟2025年12月高三联考英语--浙江强基联盟12月高三联考DA.doc
- 浙江省金丽衢十二校2025学年高三第一次联考英语答案.doc
- 浙江省金丽衢十二校2025学年高三第一次联考英语试题.doc
原创力文档


文档评论(0)