热搜关键词: 信号与系统无刷电机ADSTCP/IP

pdf

深入浅出嵌入式底层软件开发

  • 1星
  • 日期: 2022-02-13
  • 大小: 58.02MB
  • 所需积分:1分
  • 下载次数:10
  • favicon收藏
  • rep举报
  • free评论
标签: 嵌入式

嵌入式

深入浅出嵌入式底层软件开发包含arm裸机程序开发、嵌入式linux系统建构、linux驱动程序开发三部分。从软硬件的分界面开始,循序渐进,逐一详细介绍嵌入式底层软件开发的各个技术要点,技术体系全面;既有一定的理论,但更加强调实战性;深入浅出,能让读者以最少的时间成本代价获得嵌入式底层软件开发的技术精髓。

深入浅出嵌入式底层软件开发适合硬件工程师、软件工程师、嵌入式软件的从业人员、教授嵌入式软件开发课程的老师、意欲从事嵌入式软件开发工作的大学生阅读。

深入浅出嵌入式底层软件开发  目录:

第1篇arm体系结构与编程

1  第1章  arm汇编编程基础

1.1  arm  cpu寄存器

1.1.1  普通寄存器r0  –  r15

1.1.2  状态寄存器cpsr与spsr

1.1.3  流水线对pc值的影响

1.2  基本寻址方式与基本指令

1.2.1  最常见寻址方式精解

1.2.2  最常见指令精解

1.3  arm汇编伪操作

1.3.1  汇编伪操作在汇编程序中的使用范例

1.3.2  最常见汇编伪操作精解

1.3.3  汇编伪操作列表

1.4  ads开发环境的使用

1.4.1  在ads中进行裸机程序的编辑、编译、运行

1.4.2  在axd中进行裸机程序调试的方法与步骤

1.5  realview  mdk开发环境的使用

1.5.1  在mdk开发环境下编写裸机程序

1.5.2  mdk调试裸机程序的方法与步骤

.1.6  其他常见寻址模式与常见指令

1.6.1  其他常见寻址模式(基址寻址、多寄存器寻址、堆栈寻址、寄存器移位寻址、相对寻址)

1.6.2  其他常见指令(访存指令、数据处理指令、乘法指令)

2  第2章  arm编程进阶

2.1  arm汇编伪指令

2.1.1  精解ldr伪指令

2.1.2  精解ad

2.1.3  精解adrl伪指令

2.1.4  nop伪指令

2.2  atpcs与混合编程

2.2.1  atpcs规则精解

2.2.2  精解c和arm汇编程序间的相互调用

2.3  裸机硬件的控制方法与例程

2.3.1  建立真实硬件的开发和调试环境

2.3.2  软件控制(驱动)硬件的编程原理

2.3.3  裸机硬件控制程序实例

2.3.4  启动例程

2.4  看门狗定时器(watchdog)

2.4.1  看门狗定时器的用途

2.4.2  看门狗工作原理

2.4.3  看门狗实验

2.5  系统时钟

2.5.1  系统工作时钟频率

2.5.2  时钟驱动实验

2.6  sdram内存

2.6.1  s3c2440存储器地址段(bank)

2.6.2  sdram内存工作原理

2.6.3  sdram的读操作

2.6.4  sdram预充电操作

2.6.5  sdram突发操作

2.6.6  sdram写操作

2.6.7  sdram的刷新

2.6.8  内存驱动实验

2.7  uart串口

2.7.1  异步通信和同步通信

2.7.2  数据的串行和并行通信方式

2.7.3  数据通信传输模式

2.7.4  s3c2440  uart控制器

2.7.5  s3c2440  uart串口工作原理

2.7.6  uart串口驱动实验

3  第3章  arm体系结构

3.1  arm处理器工作模式

3.1.1  arm处理器不同模式下寄存器

3.1.2  arm处理器模式切换(含mrs,msr指令)

3.2  arm处理器异常处理

3.2.1  异常分类

3.2.2  异常发生的硬件操作

3.2.3  异常返回地址

3.2.4  异常向量表

3.2.5  异常处理的返回

3.3  s3c2440系统中断

3.3.1  中断的产生-中断源

3.3.2  中断优先级

3.3.3  中断控制相关寄存器

3.3.4  系统中断流程

3.3.5  按键控制led灯实验

3.4  semihosting与硬件重定向

3.4.1  semihosting半主机调试

3.4.2  硬件重定向

3.5  系统调用与软件中断swi的实现

3.5.1  系统调用

3.5.2  软件中断

3.5.3  软中断处理

3.5.4  led系统调用实验

3.6  进程切换的实现

3.6.1  进程

3.6.2  进程控制块pc

3.6.3  进程创建

3.6.4  进程队列

3.6.5  进程调度(schedule)

3.6.6  上下文切换

3.7  mmu与内存保护的实现

3.7.1  存储管理单元mm

3.7.2  cach

3.7.3  cp15协处理器

3.8  实战:小型多任务操作系统minios的实现

3.8.1  minios代码分析

3.8.2  minios应用程序接口

3.8.3  minios应用程序系统调用接口

4  第4章  嵌入式linux软件开发环境搭建

4.1  体验嵌入式linux系统

4.2  linux操作系统安装

4.2.1  在window上安装虚拟机

4.2.2  在虚拟机上安装linux操作系统ubuntu9.1

4.3  在ubuntu9.10中安装基本的开发环境

4.4  ubuntu9.10上网络服务的安装与配置

4.4.1  设置vmware网络

4.4.2  安装、配置和使用ftp服务

4.4.3  安装、配置nfs服务

5  第5章  建构bootloade

5.1  准备工作

5.1.1  嵌入式linux系统概述

5.1.2  构建交叉编译工具链

5.1.3  bootloader概述

5.2  深入剖析u-boot代码

5.2.1  安装和使用源代码阅读工具source  insigh

5.2.2  u-boot的编译初步

5.2.3  分析u-boot的第1阶段代码(cpu/arm920t/start.s)

5.2.4  分析u-boot的第2阶段代码

5.2.5  继续移植、编译u-boo

5.2.6  u-boot常用命令使用简介

5.2.7  u-boot命令实现框架的分析

5.2.8  u-boot引导linux操作系统的过程分析

5.2.9  让u-boot支持从usb  slave接口获得数据

6  第6章  建构嵌入式linux内核

6.1  linux内核简介

6.1.1  linux内核版本历史

6.1.2  内核源码目录结构

6.1.3  linux内核构造系统简介

6.2  移植、裁减及配置linux内核到s3c2440开发板

6.2.1  体验linux内核配置、编译与使用

6.2.2  为s3c2440移植内核

6.2.3  配置并裁减内核

6.2.4  运行内核并验证内核被配置的功能

6.3  内核kconfig与makefile文件分析

6.3.1  内核构造系统简介

6.3.2  kconfig文件精解

6.3.3  .config文件说明

6.3.4  makefile文件精解

6.3.5  实战:修改kconfig和makefile,完成向内核中添加新的功能组件——网卡、声卡、lcd、触摸屏驱动

7  第7章  建构嵌入式linux文件系统

7.1  嵌入式linux文件系统简介

7.1.1  嵌入式文件系统概述

7.1.2  mtd设备与flash文件系统简介

7.1.3  嵌入式linux系统中的tmpfs文件系统

7.2  详解制作根文件系统

7.2.1  fhs标准介绍

7.2.2  编译/安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录

7.2.3  利用交叉编译工具链,构建/lib目录

7.2.4  手工构建/etc目录

7.2.5  手工构建最简化的/dev目录

7.2.6  使用启动脚本完成/proc、/sys、/dev、/tmp、/var等目录的完整构建

7.2.7  制作根文件系统的jffs2映像文件

7.3  建构嵌入式linux应用程序系统

7.3.1  辅助处理工具的移植

7.3.2  mp3播放器  madplay的移植

7.3.3  主要网络服务器的移植与使用

7.3.4  数据库程序的移植与使用

7.4  建构gui系统

7.4.1  移植tslib库

7.4.2  移植qtopia

8  第8章  linux驱动程序开发基础

8.1  linux设备驱动程序简介

8.1.1  设备驱动分类和内核模块

8.1.2  设备文件和设备驱动

8.1.3  内核模块的编译和使用

8.2  字符设备驱动基本编程

8.2.1  字符设备驱动体验

8.2.2  实现字符设备驱动的工作

8.3  驱动程序中的并发控制方法

8.3.1  并发控制原理简介

8.3.2  信号量的编程实战

8.3.3  自旋锁的编程实战

8.3.4  linux内核提供的其他并发控制方法

8.4  驱动程序中的阻塞与非阻塞编程

8.4.1  体验阻塞i/o

8.4.2  如何在驱动程序中实现阻塞i/o

8.4.3  体验非阻塞i/o

8.4.4  如何在驱动程序中实现非阻塞i/o

8.5  字符设备驱动程序对一些高级特性的实现

8.5.1  non-seekable的实现

8.5.2  select的实现

9  第9章  linux字符设备驱动开发实战

9.1  io内存与硬件通信

9.1.1  驱动中的内存分配

9.1.2  使用  i/o  端口地址空间与硬件进行通信的内核api介绍

9.1.3  使用  i/o  内存地址空间与硬件进行通信的内核api介绍

9.1.4  通过i/o内存驱动硬件的实战——led灯驱动

9.1.5  驱动程序对ioctl的规范实现

9.2  内核misc设备架构分析

9.2.1  定义全局变量

9.2.2  注册主设备号为10的misc设备

9.2.3  导出内核api  ——  misc_register函数

9.2.4  实施乾坤大挪移的misc设备open函数

9.2.5  导出内核api  ——  misc_deregister函数

9.3  watchdog驱动

9.3.1  相关概念

9.3.2  watchdog硬件结构分析

9.3.3  watchdog驱动的初始化和卸载

9.3.4  探测函数watchdog_probe的实现

9.3.5  实现misc设备中对设备文件的操作

9.3.6  watchdog平台驱动的设备移除、挂起和恢复接口函数的实现

9.3.7  测试watchdog驱动

9.4  内核编码规范与风格

9.4.1  缩进、长行、{}与空格的放

9.4.2  变量和函数

9.4.3  注释.macros和enums

9.4.4  快乐使用内核提供的实现常用功能的宏

10  第10章  linux驱动中的中断编程

10.1  驱动程序调测方法与技巧

10.1.1  利用printk

10.1.2  详解oop消息

10.1.3  利用strace

10.1.4  利用内核内置的hacking选项

10.1.5  其他调测方法简介

10.2  驱动程序中的中断处理

10.2.1  中断简述

10.2.2  驱动程序中进行中断处理涉及到的最基本的内核api

10.2.3  驱动程序进行中断处理的实例代码分析

10.2.4  其他关于中断的内核api

10.3  内核时间与内核定时器

10.3.1  内核中如何记录时间

10.3.2  内核定时器api

10.3.3  内核定时器与内核时间的应用案例——按键消抖

10.3.4  如何在内核中实现延时

10.4  中断顶半部与底半部

10.4.1  区分和使用中断顶半部与底半部的原因

10.4.2  tasklet机制与编程实例

10.4.3  workqueue机制与编程实例

10.4.4  tasklet与workqueue的区别和不同应用环境总结

10.5  linux中断处理系统的架构与共享中断

10.5.1  裸机程序中的中断编程与有操作系统下的中断编程的区别

10.5.2  linux中断处理系统的架构

10.5.3  关于共享中断的说明

10.5.4  共享中断实例

11  第11章  linux网络设备驱动开发实战

11.1  网络设备驱动基础

11.1.1  体验网卡驱动

11.1.2  网卡驱动的基本知识——2个结构体和5个函数

11.1.3  虚拟网卡snull驱动代码分析

11.1.4  网卡驱动的编写主要内容总结

11.2  网络设备驱动实例——cs8900

11.2.1  虚拟网卡驱动与真实网卡驱动的主要区别

11.2.2  真实网卡驱动的整体框架分析

11.2.3  驱动中关于cs8900硬件操作的探讨

12  第12章  其他重要设备驱动开发实战

12.1  块设备驱动初步(以ramdisk为例)

12.1.1  体验块设备驱动

12.1.2  块设备驱动框架介绍

12.1.3  块设备的简单读写实现代码分析

12.1.4  块设备的高效读写实现代码分析

12.1.5  块设备的其他操作接口fops

12.2  lcd驱动

12.2.1  lcd裸机驱动

12.2.2  帧缓冲(framebuffer)设备驱动框架结构

12.2.3  lcd驱动实例代码

12.2.4  lcd驱动代码的主干结构的总结

12.2.5  测试lcd驱动程序

12.3  触摸屏驱动

12.3.1  触摸屏裸机驱动

12.3.2  linux输入子系统

12.3.3  linux下触摸屏驱动的实现步骤

12.3.4  测试触摸屏驱动程序

12.4  usb驱动初步

12.4.1  linux下4种usb驱动简介与功能体验

12.4.2  usb接口与规范

12.4.3  usb设备驱动基本知识

12.4.4  usb设备驱动实例

参考文献

推荐帖子 最新更新时间:2022-05-21 10:46

【MangoTree】Atom-RIO的OEM版,适用于批量部署,无缝支持LabVIEW FPGA编程开发
【MangoTree】Atom-RIO的OEM版,适用于批量部署,无缝支持LabVIEW FPGA编程开发 Atom-RIO的OEM版,便于Atom-RIO的批量部署。高性价比。 程序写入后,可脱离CPU独立工作 I/O,支持2*25pin连接器。共80个用户控制DIO Spartan-6 LX75 FPGA (选配LX150),用于自定义I/O定时、控制和处理 支持PCIe DMA,C
MangoTree EE_FPGA学习乐园
只为uC而生,uS成长历程23 spi-flash sst25vfxxx
还是拖了很久,今天终于可以继续更新了。 弄了两个晚上加早上一个多小时,先是把原先 独立的用于测试sst25vf080的flash读写例程 改写成可以方便移入 uS的形式。 这里面遵循的是一个分层的原则,在细说这个以前,我先撑现在还记得,先记下两个新的想法,它很可能是 uS-v0.31 uS-v0.32的内容; 1.模块/函数 运行的超时强制退出机制; 2.如果要我从外部植入一个 变量,去作
辛昕 编程基础
CC Debuger 电脑无法识别修复
由于原厂CC Debuger 价格较贵,所以大多数人都是买的某宝上山寨的。而山寨的有时候会莫名其妙坏掉例如电脑无法识别,这时我们就需要对其重新烧写固件。 参考TI官方的CC Debuger使用手册, 用好的CC Debuger连接损坏的CC Debuger,要注意排线方向不要反。 1.  当Flash Programmer启动后,在 “What do you want to program?
lemon0809 微控制器 MCU
VAS5175A_VAS5176锂电充电管理IC应用参数
VAS5175A_VAS5176锂电充电管理IC应用参数设置 1.  电感选择:电感功率是输入电流的1.5倍以上,最好2倍以上。 2.  限流电阻:1206封装是0.25W   0805封装是0.125W   充电电流按2A算:2×2×0.015=0.06W,用0805封装的就足够了,推荐用1206封装。 3.  经过测试验证VAS5175没有自适应功能,以下有三个解决方案:(双节锂
yaohongxia0903 电源技术
MAX32630FTHR设计笔记(5):AD测量范围的设置,四种(及注意事项)
/******************************************************************* 内容:ADC配置,AIN0~AIN3 作者:Justice_Gao 日期:2017年7月15日 问题说明: 源代码程序的ADC采样使用的参考电压为内部参考电压1.2V,可测量的电压值范围为0~0.6V(参考电压/2), 这里我将提供ADC初始化设置,提供多种可测
Justice_Gao MAX32630FTHR设计大赛
学习MSP430F5529 定时器Timer_A的问题
MSP430F5529共有两类共4个定时器,分别是Timer_A定时器3个和Timer_B定时器1个,按照每个寄存器配备的捕获/比较器的个数分别命名为Timer0_A(内有5个捕获比较器)、Timer1_A(3个)、Timer2_A(3个)、Timer0_B(7个)。   这一章,我们讲定时器Timer0_A.(A类的都一样)  注意:下面所提到的所有寄存器,在TA后面插入0或1或2就分别表示Ti
Jacktang 微控制器 MCU

评论

登录/注册

意见反馈

求资源

回顶部
查找数据手册?

EEWorld Datasheet 技术支持

热门活动

相关视频

可能感兴趣器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
×