ARM裸机加强版

来自百问网嵌入式Linux wiki
Wiki讨论 | 贡献2018年4月26日 (四) 14:07的版本
欢迎来到第一期ARM裸机加强版Wiki教程
  • 第一期ARM裸机加强版视频教程是基于JZ2440,Ubuntu16.04系统进行视频讲解操作
  • 考虑到视频教程知识点过多,一时无法全部理解,故将视频内容整理成文档供参考。由于工作量大,文档中难免会出现遗漏或者错误,请大家看到后及时指正
  • 欢迎大家对wiki提出建议,共同努力,共同成长

本教程的开发环境

  • 电脑系统 Windows7 / Windows10
  • 百问网提供的虚拟机系统Ubuntu16.04
  • 视频配套开发板:JZ2440 V3
  • 部分学员反馈ubuntu16.04虚拟机使用时黑屏或者无法打开,影响学习进度,现制作一个新的虚拟机系统供大家备用,内含有使用文档。链接:https://pan.baidu.com/s/1R1K_OjGyMqtbLglaZnB20Q 密码:e51n
  • 如有问题请添加QQ群:562614605反馈。
第一期ARM裸机加强版Wiki教程目录
ARM裸机加强版WiKi ARM裸机加强版WiKi_PDF文档


第一期ARM裸机加强版课程目录
ARM裸机1期加强版1 ARM裸机1期加强版2
  • 第001课_不要再用老方法学习单片机和ARM(免费)
    • 第001节_单片机程序员发展的必选之路: Linux
    • 第002节_单片机知识是Linux驱动开发的基础之一
    • 第003节_单片机和Linux都想学_换个两全的方法学习单片机
  • 第002课_ubuntu图形界面操作(免费)
    • 第000节_安装百问网制作的ubuntu16.04虚拟机
    • 第001节_新建目录_新建并编辑文件
    • 第002节_word_excel_ppt的操作
    • 第003节_图片浏览_音乐播放_视频播放
    • 第004节_网络设置_网页浏览_在线听歌_在线看视频
    • 第005节_ubuntu软件下载中心
    • 第006节_ubuntu系统设置详细讲解
    • 第007节_linux目录结构初体验
  • 第003课_linux入门命令
    • 第001节_linux命令入门演示
    • 第002节_shell命令解析器功能说明
    • 第003节_linux命令提示符和linux命令格式
    • 第004节_linux常用命令引入
    • 第005节_pwd命令__独家记忆方法
    • 第006节_cd命令讲解1__独家记忆方法
    • 第007节_linux基础知识__家目录_当前路径
    • 第008节_linux基础知识__上一个路径_上一次路径
    • 第009节_linux基础知识__linux目录结构介绍
    • 第010节_linux基础知识__绝对路径和相对路径
    • 第011节_cd命令讲解2_注意事项
    • 第012节_ls命令__独家记忆方法
    • 第013节_目录操作mkdir和rmdir_独家记忆方法
    • 第014节_文件操作touch_mv_cp_rm
    • 第015节_文件查看和编辑cat_gedit
    • 第016节_清除屏幕_clear和reset
    • 第017节_帮助信息man_info_help
  • 第004课_vi编辑器
    • 第001节__vi编辑器课程特色和课程纲要
    • 第002节_vi编辑器的引入
    • 第003节__vi编辑器的三种模式__模式间相互切换
    • 第004节__文件的打开_新建_保存
    • 第005节__如何使vi快速移动光标__vi的难点
    • 第006节__文本复制_粘贴_删除_撤销__百问网独家记忆方法
    • 第007节__文本查找和替换__百问网独家记忆方法
  • 第005课_linux进阶命令
    • 第001节__find查找文本
    • 第002节_grep查找字符串
    • 第003节__file查看文件类型
    • 第004节__which和whereis查找命令所在位置
    • 第005节__gzip和bzip2单个文件的压缩和解压
    • 第006节__tar多个文件和目录的压缩和解压
  • 第006课_开发板熟悉与体验(免费)
    • 第001节_开发板接口介绍与串口连接
    • 第002节_使用eop烧写裸板程序
    • 第003节_eop常见问题
    • 第004节_使用uboot烧写裸板程序
    • 第005节_恢复出厂系统
    • 第006节_一句话解决嵌入式开发ping问题
  • 第007课_裸机开发步骤和工具使用(免费)
    • 第001节_裸机开发步骤简介
    • 第002节_source insight代码查看工具的使用
    • 第003节_Notepad编辑器和二进制文件查看工具
  • 第008课_第1个ARM裸板程序及引申(部分免费)
    • 第001节_辅线1_硬件知识_LED原理图
    • 第002节_辅线1_硬件知识_S3C2440启动流程与GPIO操作
    • 第003节_编写第1个程序点亮LED
    • 第004节_汇编与机器码
    • 第005节_编程知识_进制
    • 第006节_编程知识_字节序_位操作
    • 第007节_编写C程序控制LED
    • 第008节_几条汇编指令_bl_add_sub_ldm_stm
    • 第009节_解析C程序的内部机制
    • 第010节_完善LED程序_编写按键程序
  • 第009课_gcc和arm-linux-gcc和Makefile
    • 第001节gcc编译器1_gcc常用选项__gcc编译过程详解
    • 第002节gcc编译器2_深入讲解链接过程
    • 第003节c语言指针复习1__指向char和int的指针
    • 第004节c语言指针复习2_指向数组和字符串的指针
    • 第005节Makefile的引入及规则
    • 第006节Makefile的语法
    • 第007节Makefile函数
    • 第008节Makefile实例
  • 第010课_掌握ARM芯片时钟体系
    • 第001节_S3C2440时钟体系结构
    • 第002节_编程提高运行时钟
  • 第011课_串口(UART)的使用
    • 第001节_辅线1_硬件知识_UART硬件介绍
    • 第002节_S3C2440_UART编程
    • 第003节_从零实现用于裸机调试的printf函数_手动确定可变参数
    • 第004节_从零实现用于裸机调试的printf函数_自动确定可变参数
    • 第005节_从零实现用于裸机调试的printf函数_printf函数在x86和arm平台的实现
  • 第012课内存控制器与SDRAM
    • 第001节_辅线1_硬件知识_内存接口概念
    • 第002节_辅线1_硬件知识_不同位宽设备的连接
    • 第003节_辅线1_硬件知识_时序图分析示例
    • 第004节_辅线1_硬件知识_SDRAM的设置
  • 第013课_代码重定位
    • 第001节_段的概念_重定位的引入
    • 第002节_链接脚本的引入与简单测试
    • 第003节_链接脚本的解析
    • 第004节_拷贝代码和链接脚本的改进
    • 第005节_代码重定位与位置无关码
    • 第006节_重定位_清除BSS段的C函数实现
  • 第014课_异常与中断
    • 第001节_中断异常概念引入与处理流程
    • 第002节_CPU模式(Mode)_状态(State)与寄存器
    • 第003节_不重要_Thumb指令集程序示例
    • 第004节_und异常模式程序示例
    • 第005节_swi异常模式程序示例
    • 第006节_按键中断程序示例_概述与初始化
    • 第007节_按键中断程序示例_完善
    • 第008节_定时器中断程序示例
  • 第015课_NOR Flash
    • 第001节_Nor Flash原理及硬件操作
    • 第002节_Nor Flash编程_识别
    • 第003节_Nor Flash编程_擦写读
  • 第016课_Nand Flash
    • 第001节_NAND_FLASH操作原理
    • 第002节_NandFlash时序及初始化
    • 第003节_NandFlash的芯片id读取
    • 第004节_NAND_FLASH数据读取
    • 第005节_NandFlash的擦除与烧写
ARM裸机1期加强版3 新1期与2期间的衔接课程
  • 第017课_LCD
    • 第001节_LCD硬件原理
    • 第002节_S3C2440_LCD控制器
    • 第003节_LCD编程_框架与准备
    • 第004节_LCD编程_抽象出重要结构体
    • 第005节_LCD编程_LCD控制器
    • 第006节_LCD编程_LCD设置
    • 第007节_LCD编程_简单测试
    • 第008节_LCD编程_画点线圆
    • 第009节_LCD编程_显示文字
    • 第010节_LCD编程_添加除法
    • 第011节_LCD编程_使用调色板
  • 第018课_ADC和触摸屏
    • 第001节_ADC硬件原理
    • 第002节_ADC编程
    • 第003节_电阻触摸屏硬件原理
    • 第004节_S3C2440触摸屏接口
    • 第005节_触摸屏编程_按下松开检测
    • 第006节_触摸屏编程_ADC中断
    • 第007节_触摸屏编程_定时器程序优化
    • 第008节_触摸屏编程_使用定时器支持长按
    • 第009节_触摸屏编程_较准原理
    • 第010节_触摸屏编程_较准与画线编程
    • 第011节_触摸屏编程_测试
    • 第012节_触摸屏编程_完善
  • 第019课_I2C裸板
    • 第001节_I2C协议与EEPROM
    • 第002节_S3C2440的I2C控制器
    • 第003节_程序框架
    • 第004节_I2C控制器编程_框架
    • 第005节_I2C控制器编程_中断
    • 第006节_EEPROM编程和测试代码
    • 第007节_测试
  • 第020课_SPI编程
    • 第001节_SPI协议介绍
    • 第002节_使用GPIO实现SPI协议操作OLED
    • 第003节_SPI_FLASH编程_读ID
    • 第004节_SPI_FLASH编程_读写
    • 第005节_在OLED上显示ADC的值
    • 第006节_使用SPI控制器
    • 第007节_移植到MINI2440_TQ2440
    • 第021课_MMU和Cache
    • 第001节_Cache简述及协处理器指令
    • 第002节_协处理器指令_开启ICache代码示例
    • 第003节_MMU及地址映射
    • 第004节_MMU代码示例
  • 第022课_传感器
    • 第001节_光敏电阻的使用
    • 第002节_高精度延时函数
    • 第003节_DHT11温湿度传感器的使用
    • 第004节_DS18B20温度传感器介绍
    • 第005节_DS18B20温度传感器编程
    • 第006节_红外线遥控协议简介及编程思路
    • 第007节_前期编程_系统时间与环型缓冲区
    • 第008节_HS0038红外线接收器的编程_打印原始脉冲
    • 第009节_HS0038红外线接收器的编程_解析数据
  • 第001课_u-boot分析与使用
    • 第001节_u-boot分析之编译体验
    • 第002节_u-boot分析之Makefile结构分析
    • 第003节_u-boot分析之源码第1阶段
    • 第004节_u-boot分析之u-boot命令实现
    • 第005节_u-boot分析_uboot启动内核
    • 第006节_u-boot分析之源码第2阶段
  • 第002课_从0写bootloader_更深刻理解bootloader
    • 第001节_自己写bootloader之编写第1阶段
    • 第002节_自己写bootloader之编写第2阶段
    • 第003节_自己写bootloader之编译测试
    • 第004节_自己写bootloader之改进
  • 第003课_内核配置裁剪及启动流程
    • 第001节 内核启动流程分析之编译体验
    • 第002节 内核启动流程分析之配置
    • 第003节 内核启动流程分析之Makefile
    • 第004节 内核启动流程分析之内核启动
  • 第004课_根文件系统
    • 第001节_构建根文件系统之启动第1个程序
    • 第002节_构建根文件系统之init进程分析
    • 第003节_构建根文件系统之busybox
    • 第004节_构建根文件系统之构建根文件系统
  • 第005课_驱动入门_字符设备驱动
    • 第001节_字符设备驱动程序之概念介绍
    • 第002节_字符设备驱动程序之LED驱动程序_编写编译
    • 第003节_字符设备驱动程序之LED驱动程序_操作LED
    • 第004节_字符设备驱动程序之LED驱动程序_测试改进
    • 第005节_字符设备驱动程序之查询方式的按键驱动程序
    • 第006节_字符设备驱动程序之中断方式的按键驱动_Linux异常处理结构
    • 第007节_字符设备驱动程序之中断方式的按键驱动_Linux中断处理结构
    • 第008节_字符设备驱动程序之中断方式的按键驱动_编写代码
    • 第009节_字符设备驱动程序之poll机制
    • 第010节_字符设备驱动程序之异步通知
    • 第011节_字符设备驱动程序之同步互斥阻塞



学习目标 掌握写汇编代码的能力,可以分析任意裸板包括 u-boot、内核里的相关汇编代码 掌握常用的硬件部件操作,比如 GPIO,UART,I2C,LCD,触摸屏; 可以写出这些硬件部件的裸板程序 深入理解 ARM 体系统架构,可以写出具备中断功能的裸板程序,对程序现场的保存、恢复有所了解,这些原理适用于任何架构 CPU,内核及应用程序 熟悉裸板程序的结构,给你一个 bootloader 就能分析它的初始化部分、内存使用情况、链接地址、重定位、程序的相对跳转/绝对跳转等 掌握 bootloader 启动内核的原理,能完全自己写出一个 bootloader、字符设备驱动


产品详情介绍 ARM裸机加强版论坛