学好linux的基础:C语言(GNU C语言与GCC);硬件基础;熟悉操作系统内核代码,熟悉多线程和网络知识。分驱动开发(驱动程序模型即框架)和应用程序开发,目标是驱动开发

驱动开发特点:

不能使用标准C库(5M太大不适合嵌入式设备(1MB));

不像应用程序有操作系统守护,内核驱动程序出错不好排查。

应用程序可以动态申请和释放较大内存,而内核常驻内存固定(32位的8KB;64位的16KB).

多平台移植:应用程序靠API;而驱动靠虚拟机(类JAVA)。

嵌入式硬件平台:龙芯、MIPS/TI的OMAP /strongARM(ARM7/9/E/10/11/secur core,用的最多的是S3C2440

嵌入式开发环境的构建:

1 在WINDOWS上安装虚拟机:VM ware 或virtual PC(被微软收购后只支持有限的linux版本OS/2);

2设置共享文件夹:虚拟机和WINDOWS通过网络(保证网络良好)通讯的,所以先在WINDOWS下设置共享文件夹,然后在虚拟机中设置共享内容就可以了。

3 代码编写查看分析工具sourceInsight

四嵌入式系统:linux vxworks WINCE

4.1 linux内存分配:为每一个进程创建虚拟地址空间,同时设备驱动程序也需要内存分配。

4.2

4.2文件系统:支持所有格式的文件系统,每种文件系统都有特有的功能:ext2用来读写设备;ext3用来写日子,sysfs:用来显示设备、驱动、总线的一些信息。

4.3设备管理:各设备和CPU内存之间的交互

4.4网络设备:驱动负责收据包的收发,然后通过接口交给应用程序的进程(不负责具体的网络通信)

4.5目录:融入内核,增加配置最终编译进内核:

4.5.1:drive:包含各驱动

4.5.2:fs文件系统

4.5.3:内核配置:通过配置文件、工具/kconfig/makefile来完成,

  • 常规配置:
  1. 模块配置:
  2. 块设备配置:硬盘调度器等
  3. 设备驱动:字符设备。块设备和网络接口设备
  4. 网络设备
  5. CPU类型特性
  6. 电源管理
  7. 总线配置
  8. 文件配置:根据介质类型容量和速度进行配置。为便于管理有统一的接口:虚拟文件系统VFS.存储介质:NORflash:片内执行适合1~4MB效率高(写入和擦除速度慢)。JFFS2:用在ecos或linux/uclinux;YAFFS:只适合NANDFLASH,速度快容量大占用内存小。内核驱动后先创建根文件系统(以FHS为标准的树形结构,可以用BUSYbox构建),同时又有不同分区(分区分别对应内核镜像文件,系统启动的所需的文件。)

字符设备:应用程序和驱动程序通过字符设备的参数(读写)进行数据交换。

并发程序的处理:自旋锁(忙闲)、信号量、完成量(线程间等待完成的信号)

异步事件的处理:阻塞(等待队列即返回前挂起)和非阻塞两种方式。中断(中断注册)和时钟机制(长短延时)

内存管理:驱动程序的良好运行依赖于内核正确的分配内存资源(Kmalloc和虚拟分配内存Vmalloc(为了解决内存碎片)按页分配(32位每页4K;64位的8K),高速缓存是对于不断申请和撤销内存操作建立一个内存池;IO空间的访问都是通过先申请资源然后通过虚拟内存映射后进行操作的。

设备驱动模型:通过设备驱动模型,驱动程序编写从而简单起来,三要素:总线(设备间通讯连接驱动程序也依附在总线上,有属性和方法)、设备(又有一个device的结构体来描述添加到驱动模型中)、驱动程序(只有子啊驱动程序中注册的设备才能使用),内核通过sysfs来映射驱动模型的关系。

平台设备模型:平台设备简言之就是CPU内置的功能设备入内置的RTC和ADC等,是为了更容易开发设备驱动。linux通过设备号(主设备号和子设备号)来标识设备,由于主设备号比较紧张所以一些混杂设备通过子设备号来标识。

I2C设备:分为设备层和总线层连个层次,并利用数字ID和设备对应的方法操作总线上的各个设备。

LINUX学习之一:的更多相关文章

  1. Linux学习日记-使用EF6 Code First(四)

    一.在linux上使用EF 开发环境 VS2013+mono 3.10.0 +EF 6.1.0 先检测一下EF是不是6的 如果不是  请参阅 Linux学习日记-EF6的安装升级(三) 由于我的数据库 ...

  2. Linux学习之CentOS(二十二)--单用户模式下修改Root用户的密码

    在上一篇随笔里面详细讲解了Linux系统的启动过程 (Linux学习之CentOS(二十一)--Linux系统启动详解),我们知道Linux系统的启动级别一共有6种级别,通过 /etc/inittab ...

  3. Linux学习笔记之兄弟连

    systemctl --user enable pulseaudio说明:安装完成后系统没有声音,用该命令可以打开.ifconfig eth0 192.168.118.1说明:给网卡设置IP地址.ap ...

  4. Linux学习内容

    Linux学习要点(转载自红联) 一.学习Linux的基本要求1. 掌握至少50个以上的常用命令. 2. 熟悉Gnome/KDE等X-windows桌面环境操作 . 3. 掌握.tgz..rpm等软件 ...

  5. Linux 学习笔记

    Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...

  6. Linux学习心得之 Linux下命令行Android开发环境的搭建

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下命令行Android开发环境的搭建 1. 前言2. Jav ...

  7. Linux学习心得之 Linux下ant安装与使用

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下ant安装与使用 1. 前言2. ant安装3. 简单的a ...

  8. 实验楼 linux 学习

    实验楼 linux 学习     一.Linux 用户管理 1.查看用户 who am i // who mom likes whoami   ====--------====== 输入的第一列表示打 ...

  9. linux学习网站分享

    http://www.zhihu.com/question/19895288 http://linux.vbird.org/ 两个linux学习的网页存起来,以后学习.

  10. linux学习笔记2-linux的常用命令

    第一篇博客:linux学习笔记1-ubuntu的安装与基本设置 之中,已经介绍了如何安装linux操作系统,以及一些基本的设置修改. 本篇博客主要介绍linux中的一些常用的终端命令 ======== ...

随机推荐

  1. 编写高质量代码改善C#程序的157个建议——建议14: 正确实现浅拷贝和深拷贝

    建议14: 正确实现浅拷贝和深拷贝 为对象创建副本的技术称为拷贝(也叫克隆).我们将拷贝分为浅拷贝和深拷贝. 浅拷贝 将对象中的所有字段复制到新的对象(副本)中.其中,值类型字段的值被复制到副本中后, ...

  2. telerik 值得学习 web mvc 桌面 控件大全

    http://www.telerik.com http://www.dxper.net/forum-70-1.html http://www.dxper.net/forum.php

  3. 软工作业1:wc.exe项目开发(java)

    Github地址:https://github.com/Zzhaomin/learngit 项目相关要求 : wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个 ...

  4. MongoDB整理笔记のDump & Restore

       备份 [root@localhost bin]# ./mongodump -d my_mongodb connected to: 127.0.0.1 DATABASE: my_mongodb t ...

  5. duilib入门简明教程 -- 前言(1)

        关于duilib的介绍就不多讲了,一来不熟,二来小伙伴们想必已经对比了多个界面库,也无需赘述.下面进入正题:     不看广告看疗效! 已有众多知名公司采用duilib做为界面库,如华为网盘. ...

  6. C#开源网络通信库PESocket的使用

    PESocket PESocket开源项目GitHub地址:点击跳转 基于C#语言实现的高效便捷网络库.支持集成到Unity当中使用. 不用过多了解网络通信内部原理,只需几行简单的代码,便能简捷快速开 ...

  7. 使用 wget 下载需要 cookie 认证的网站

    .使用火狐,安装 Export Cookies 插件 2.登录网站,点菜单"工具-Export Cookies..",保存 cookies.txt 到自己的文件夹 3.把 cookies.t ...

  8. web静态资源的访问(笔记)

    1.在web-inf外的静态资源访问: 三种方式: 2.访问web-inf内的静态资源: 使用请求转发的方式访问web-inf静态资源(重定向相当于在浏览器输入,无法访问) 参考:https://bl ...

  9. MarkdownPad基于语法示例

    博客园 [有道] (https://www.zybuluo.com/mdeditor#) [Markdown语法教学链接] (https://www.cnblogs.com/chimoxuanzhi/ ...

  10. 1235: 入学考试[DP]

    1235: 入学考试 [DP] 时间限制: 1 Sec 内存限制: 128 MB 提交: 37 解决: 12 统计 题目描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近 ...