12281177孙迦南_linux环境PXA270端口驱动详解.docVIP

12281177孙迦南_linux环境PXA270端口驱动详解.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
12281177孙迦南_linux环境PXA270端口驱动详解

linux环境PXA270端口驱动详解 PXA270实验箱所需的状态:boot loader、kernel Boot loader: Boot loader 就是在操作系统内核运行之前运行的一小段程序,初始化 硬件设备和建立内存空间的映射图。将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。 系统加电或复位后,基于 XSCale core 的 CPU 在复位时通常都从地址 0取它的第一条指令。而基于 CPU 构建的嵌入式系统通常都有某种类型的固态存储设备( FLASH 等)被映射到这个预先安排的地址上。因此在系统加电后,CPU 将首先执行 Boot Loader 程序。 Boot Loader两种工作模式:下载模式、启动模式 大多数Boot Loader都分为阶段1和阶段2两大部分: 阶段1实现依赖于CPU体系结构的代码,通常包括以下步骤: 1,屏蔽所有的中断 2,设置CPU的速度和时钟频率 ; start.S 3,RAM初始化 ; memsetup.S 4,硬件设备初始化,初始化GPIO功能 ; fixgpio.S 5,拷贝Boot Loader的程序到RAM空间中; 6,设置好堆栈; 7,跳转到阶段2的C入口点。ldr pc, =main 阶段2实现一些与操作系统相关的功能, 通常主要包括以下步骤: 1,初始化本阶段要使用到的硬件设备,初始化至少一个串口,以便和终端用户进行I/O输出信息 ; 2,初始化网络传输等 3,初始化计时器等 4,系统内存映射(memory map); 5,将kernel映像和根文件系统映像从Flash读到RAM空间中; 6,为内核设置启动参数; 7,调用内核。 Kernel: 操作系统内核 操作系统内核是指大多数操作系统的核心部分。它由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。操作系统内核通常运行进程,并提供进程间的通信。 Linux内核的配置系统由三个部分组成: 1)Makefile:定义 Linux 内核的编译规则; 2)配置文件(config.in):提供配置选择功能 3)配置工具:Make menuconfig 文件系统: 文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法,也指用于存储文件的磁盘或分区,或文件系统种类。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。 (2)驱动程序SEG.c #include linux/module.h #include linux/config.h #include linux/module.h #include linux/kernel.h #include linux/init.h #include asm/hardware.h #include linux/ioport.h #include linux/malloc.h #include asm/io.h #include asm/delay.h #include asm/uaccess.h char LED_MODULE=0; MODULE_PARM ( LED_MODULE, b ); #define DEVICE_NAME emdoor_8seg #define SEG_CS1 0 //LED片选地址 #define SEG_CS2 0 //数码管片选地址,控制前两个数码管 #define SEG_CS3 0 //数码管片选地址,控制后两个数码管 static char LED[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; static int SegMajor = 0; unsigned long *cs1_address, *cs2_address, *cs3_address; /**/ struct seg { char led1_val; //led所显示的内容 char led2_val; char led3_val; //数码管01要显示的内容 char led4_val; //数码管02要显示的内容 char led5_val; //数码管03要显示的内容 char led6_val; //数码管04要显示的内容 char negative; //标志 }; static void Updateled(struct seg *seg_7) { //将led1_val内容写入led中

文档评论(0)

cjlfjycby + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档