STLINUX基础知识介绍.ppt_第1页
STLINUX基础知识介绍.ppt_第2页
STLINUX基础知识介绍.ppt_第3页
STLINUX基础知识介绍.ppt_第4页
STLINUX基础知识介绍.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

STLINUX基础知识介绍,一:STLINUX介绍,STLINUX开发环境,STLinuxDistributionandDevelopmentEnvironment(LDDE).1:LDDE支持ST40及ST2002:包含完整的开发环境、编译器、调试器、下载工具、系统监控器3:可配置内核支持4:集成uboot5:Multicom支持,stlinux版本,STLinuxDistribution2.3(Added5thNov2007)STLinuxDistribution2.3EAR(EarlyAccessRelease)(Added29thMar2007)STLinuxDistribution2.2(Added19thOct2006)STLinuxDistribution2.0(Added7thOct2005)STLinuxDistribution2.0EAR(Added16thJul2005)STLinuxdistribution1.0(Added21stFeb2005),开发与调试,开发与调试,1:NFS基于网络文件系统的调试,一般用于调试应用及驱动2:TFTP基于FTP传输协议的调试,一般用于调试boot及内核等3:其他调试方法,常用命令,makesh4-linux-gccsh4-linux-g+sh4-linux-ldsh4-linux-nmsh4-linux-objdump,二:STLINUX软件结构,系统框图,应用程序,系统接口,KERENL,STDRIVER,SMITDRIVER,硬件,移植kernel,选择kernel版本选择kernel支持的参考板裁减kernelmakemenuconfig编译kernelmakevmlinux压缩kernelmkimagevmlinux,编译stapi,1:安装mutilcom3.1.2及referencetree2:编译源码3:生产动态可加载模块驱动及应用静态连接库,根文件系统jffs2,可读写的文件系统系统性能高,断电保护及碎片整理功能数据压缩效率高mkfs.jffs2生产文件系统压缩包GB310压缩包中:busybox、*.so.*、stfirmware、*.ko、app.exe.,flash分区,8Mflash空间分配如下:Uboot0.25MKernel1.5M文件系统6.25M,u-boot介绍,Uboot是德国DENX小组的开发用于多种嵌入式CPU的bootloader程序支持LINUX、NetBSD,VxWorks,QNX,RTEMS,ARTOS,LynxOS嵌入式操作系统包含两种不同的操作模式:启动加载模式和下载模式支持从网络、flash中启动kernel支持flash读写传递参数给kernel,移植uboot,选择uboot版本选择uboot支持的参考板配置硬件资源及DDR等修改驱动:flash、uart、ethernet,U-BOOT命令,BootSetenvPrintenvTftpPing.,三:字符设备驱动,LINUX设备的分类,字符设备串口,终端,触摸屏ls-l/dev/ttyS0crw-rw-rw-1rootuucp4,644月119:56/dev/ttyS0块设备FLASH,RAMDISK,硬盘ls-l/dev/mtdblock3brw-r-r-150550531,3Feb192005/dev/mtdblock3网络设备以Linux的方式看待设备可区分为3种基本设备类型.每个模块常常实现3种类型中的1种,因此可分类成字符模块,块模块,或者一个网络模块.,设备文件与设备号,用户通过设备文件访问设备每个设备用一个主设备号和次设备号标识主设备号和次设备号majornumber:相同的设备使用相同的驱动程序minornumber:用来区分具体设备的实例,设备驱动的基本结构,设备驱动层图,设备驱动的功能,上层软件的抽象操作与设备操作的转换对下管理各种I/O设备,内核模块机制,Linux驱动以内核模块的方式实现一组可以动态加载/卸载的代码Linux内核运行时动态扩展的一种技术模块机制(LinuxKernelModule,LKM)提高了linux内核的可扩展性用户只要有权限,就可以编写模块挂入内核模块的缺点:增加了内核管理代价,LINUX内核模块的框架,staticintinit_routine(void)register_chrdev_region()devfs_mk_cdev()voidcleanup_routine(void)unregister_chrdev_region()module_init(init_routine);module_exit(cleanup_routine);MODULE_LICENSE(GPL);,LINUX内核模块的框架,structfile_operationsloff_t(*llseek)(structfile*,loff_t,int);ssize_t(*read)(structfile*,char*,size_t,loff_t*);ssize_t(*write)(structfile*,constchar*,size_t,loff_t*);int(*ioctl)(structinode*,structfile*,unsignedint,unsignedlong);int(*mmap)(structfile*,structvm_area_struct*);int(*open)(structinode*,structfile*);int(*release)(structinode*,structfile*);int(*fsync)(structfile*,structdentry*,intdatasync);int(*fasync)(int,structfile*,int);,LINUX内核模块的框架,(1)llseek(file,offset,whence):修改文件的读写指针。(2)read(file,buf,count,offset):从设备文件的offset处开始读出count个字节,然后增加*offset的值。(3)write(file,buf,count,offset):从设备文件的offset处写入count个字节,然后增加*offset的值。(4)ioctl(inode,file,cmd,arg):向一个硬件设备发命令,对设备进行控制。(5)mmap(file,vma):将设备空间映射到进程地址空间。(6)open(inode,file):打开并初始化设备。(7)release(inode,file):关闭设备并释放资源。(8)fsync(file,dentry):实现内存与设备之间的同步通信。(9)fasync(file,on):实现内存与设备之间的异步通信。,简单字符设备驱程,EveryLKMconsistsoftwobasicfunctions(minimum):intinit_module(void)/*usedforallinitializationstuff*/.voidcleanup_module(void)/*usedforacleanshutdown*/.安装模块命令#insmodmodule.o#modprobemodule.o卸载模块命令#rmmodmodule.o查询系统中已装入的模块#lsmod,简单字符设备驱程,例子hello.c#defineMODULE#includeintinit_module(void)printk(Hello,worldn);return0;voidcleanup_module(void)printk(Goodbyecruelworldn);编译模块#gccchello.cDMODULED_KERNEL_-DLINUX-WallO2-I/usr/src/linux-2.6/include安装、卸载模块#insmodhello.oHelloworld#rmmodhelloGoodbyecruelworld,简单字符设备驱程,staticstructfile_operationshelloworld_fops=open:helloworld_open,read:helloworld_read,write:helloworld_write,ioctl:helloworld_ioctl,;/kernelspace,简单字符设备驱程,ssize_thelloworld_write(structfile*filp,char*buffer,size_tsize,loff_t*offset)/kernelspaceunsignedcharstringMAX_BYTE_NUM;unsignedcharsize1=copy_from_user(string,buffer,size);return(size1);voidhelloworld_write(unsignedintaddr,unsignedchardata)/userspacestructdatadata1=.;write(fd,简单字符设备驱程,Kernelspace与userspace数据交互copy_to_user(void_user*to,constvoid*from,unsignedlongn);copy_from_user(void*to,constvoid_user*from,unsignedlongn);,模块设计注意事项,1:模块设计与应用程序设计模块是装入内核的,运行时CPU处于核心态应用程序运行时CPU处于用户态2:编译模块设计应用程序使用的include文件:/usr/include设计内核模块使用的include文件:/usr/src/linux-2.6/inclu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论