技术干货 > 文章详情

嵌入式丨嵌入式开发高级教程

10个月前 Linux 嵌入式 uboot

G.jpg

 

导读:这个阶段重点学习嵌入式linux操作系统的深层次开发。一个硬件,如果没有软件的支持,他什么都做不了。一块开发板,怎么让他从什么都做不了,到运行起绚丽交互界面,甚至实现android平板的功能,让我们一起来揭开它的神秘面纱吧。

 

G1.jpg

 

  嵌入式底层驱动学习的前提,是要将我们的开发板上运行起linux操作系统,那么你就要学习如何移植系统三大组件的步骤,bootloader,linux内核,文件系统的过程。

 

  系统移植步骤

  交叉编译器

  交叉编译器的安装

  工具集合

  环境搭建需求分析

  台式机移植环境搭建

  虚拟机安装双网卡及配置

  uboot环境变量使用

  uboot网络层配置

  uboot下的tftp服务的使用

  linux下tftp服务的搭建及测试

  uboot下nand命令使用

  uboot启动内核命令

  uboot启动内核的条件

  ramdisk启动

  NFS文件系统服务端配置

  nfs根文件系统测试

 

  想系统学习以上知识,请点击:探寻嵌入式系统移植的世界学习视频

 

G2.jpg

 

  通过对一个优秀的bootloader软件的全过程分析,一步步如抽丝剥茧般带你领略嵌入式开发所涉及的系统启动部分涉及的概念和相关硬件的原理。包括CP15、UART、DDR2这些系统启动必须掌握的设备信息。

 

  u-boot的版本选择

  u-boot的异常向量表,V210的启动机制原理

  用objdump反汇编查看u-boot的头部代码和异常向量处理

  ENTRY等宏的展开,CPSR寄存器的设置

  CP15协处理器基础,VBAR异常向量表基址映射

  编译、链接、汇编过程

  芯片型号判断,复位方式判断

  IO保持、复位方式判断、中断初始化

  UART初始化与异步通信原理

  UART

  用UART显示某指定内存中的数据

  DDR内存的基本原理

  DDR内存的在V210开放板上的硬件连接

  DDR2-Device的内部结构

  DDR2-操作的有限状态机

  DDR2的MRS和EMRS寄存器

  DDR2的读写时序

  DDR2初始化代码

  编写自己的DDR初始化代码

  board_init_f函数

  mmc_relocate分析

  将u-boot.bin从SD卡搬运到DDR内存中

  u-boot的链接镜像结构分析

  board_init_f函数

  u-boot的自举实现

  relocate_code汇编自举代码分析

  bord_init_r函数

  跳转到主循环,main_loop

  u-boot 解析终端输入命令行的原理

  u-boot 的命令执行实现

  bootm启动流程

 

  想系统学习以上知识,请点击:看懂uboot的神秘面容学习视频

 

G3.jpg

 

  嵌入式驱动开发包括硬件子系统和软件子系统两部分,Linux内核及文件系统属于软件子系统,学习如何选择、配置、移植与制作一个可用文件系统及其镜像,以及怎样配合Linux内核的配置来调整应用生成的文件系统,进而掌握构建完整嵌入式驱动软件子系统应用开发环境。

 

  Linux内核-内核启动参数

  Linux内核-根文件系统框架

  Linux内核-busybox

  Linux内核-启动脚本

  Linux内核-busybox编译

  Linux内核-busybox应用

  Linux内核-根文件系统完善

  Linux内核-常用嵌入式文件系统

  linux内核文件系统

  Linux内核-NFS文件系统

  Linux内核-initramfs文件系统

  Linux内核-cramfs和squashfs

  Linux内核-jffs2和yaffs2

  Linux内核构建中文件系统选项

  Linux内核构建中文件系统选项配置

  Linux内核-Cramfs文件系统的制作与使用

  Linux内核-squashfs文件系统的制作与使用

  Linux内核-jffs2文件系统的制作与使用

  Linux内核-yaffs2文件系统的制作与使用

  Linux内核-Flash分区与文件系统镜像烧录

  Linux内核-文件系统的挂载配置与选项

  Linux内核-选择与配置原则

 

  想系统学习以上知识,请点击:Linux内核及文件系统制作学习视频

 

g4.jpg

 

  Linux字符设备驱动程序是Linux下被组织为一组完成不同任务的函数的集合,通过这些函数使得linux的设备操作犹如文件一般。

 

  驱动概念和结构体

  字符设备驱动源代码分析

  驱动的测试以及驱动的Makefile

  linux内核编译系统原理

  linux驱动中断

  linux定时器原理

 

  想系统学习以上知识,请点击:linux字符设备驱动初探学习视频

 

G5.jpg

 

  这个学习内容几乎囊括了linux下的所有类型的驱动,包括platform驱动、usb驱动、pci驱动、framebuffer驱动、网卡驱动等,同时穿插linux内核中的各种机制比如互斥机制、中断机制、睡眠机制等,学习后可以直接上手嵌入式开发linux的驱动和移植工作。

 

  linux内核同步和互斥

  驱动中的阻塞和唤醒

  linux内存映射机制

  linux进程虚拟地址空间管理机制

  应用层mmap函数的使用方法

  platform驱动架构:platform框架

 

  想系统学习以上知识,请点击:linux驱动策略及框架学习视频

 

G6.jpg

 

  在嵌入式开发中,Linux输入子系统是由输入子系统设备驱动层、输入子系统核心层(Input Core)和输入子系统事件处理层(Event Handler)组成。

 

  三个重要的结构体

  事件驱动evdev

  input设备驱动

 

  想系统学习以上知识,请点击:linux下输入子系统学习视频

 

G7.jpg

 

  了解内核移植过程及在移植中需要涉及的几个基本工具脚本的使用

 

  内核基本知识

  内核源码目录结构

  内核头文件命名规律

  内核配置方法

  内核编译过程及结果

  实验内核运行在开发板

  内核Kconfig语法

  添加驱动到内核实验

  LED驱动添加测试

 

  想系统学习以上知识,请点击:Linux内核移植入门学习视频

 

G8.jpg

 

  IIC硬件设备基本概念

  IIC硬件设备操作时序

  IIC硬件设备读写时序

  IIC硬件设备相关寄存器

  IIC子系统开发之设备驱动框架层功能

  IIC子系统开发之核心层

  IIC子系统开发之设备驱动层

  IIC应用程序开发

  IIC设备驱动之系统流程

  IIC设备驱动之资源层

  IIC设备驱动之总线驱动层

  IIC设备驱动之IIC特定驱动开发

 

  想系统学习以上知识,请点击:IIC设备驱动及子系统开发学习视频

 

想了解更多?欢迎点击:嵌入式开发学习路线

 


0

登录 后参与讨论

没有更多评论了

有一位课程导师想与你聊聊

客服热线 400-862-8862

回到顶部