韦东山嵌入式Linux学习笔记-1-为什么要学习嵌入式Linux
论单片机
- 学习单片机的前途:没工作啊~没人会用月薪2万来招聘一个博士写本科生都能做的事;
- 不要使用C51、STM32这种单片机专用的开发板;
- 不要使用Keil等MDK,集成度太高的软件(内部封装了很多技术细节).
嵌入式Linux与Windows的区别
- windows系统: 上电->BIOS->启动Windows内核->挂载C盘,D盘等系统盘,应用盘->启动应用程序;
- 嵌入式Linux系统: 上电->BootLoader->启动Linux内核->挂载根文件系统->启动应用程序.
BootLoader的功能
要从Flash/SD卡读取内核,需要:
1. 初始化时钟,初始化内存,设置网卡;
2. 从Flash/SD卡中读取内核启动;
3. 显示logo,需要操作LCD.
* 那怎么写这些呢?
* 一步步地写!从LED,时钟,网卡,Flash等一步步去写.(**本质就是单片机程序!**)
**BootLoader是单片机程序大全.**
Linux内核的功能
内核要挂载根文件系统,意味着内核也要能操作硬件!,这就是驱动程序.
简单驱动程序框架:驱动程序=软件框架+硬件配置.
* (软件)应用程序调用: open, read, write;
* (硬件)驱动程序执行: drv_open要配置硬件,GPIO设置为输出;drv_read要返回GPIO状态;drv_write要写GPIO的值.
* 要掌握硬件开发的能力:学会看原理图,看芯片手册,知道怎么读写寄存器.
开发嵌入式Linux系统的硬件需求
* 开发板选择: `单片机->bootloader->linux驱动->APP(纯C++无界面应用程序,Qt/Android); `
* 开发板种类:三星(S3C2440, S3C6410, S5PV210, EXYNOS4412), TI(AM437X,AM335X), Freescale(I.MX6), 国产芯片(全志,瑞芯微).
* 选择原则:资料丰富-S3C2440为首选!
* 使用S3C2440开发板,在Ubuntu下使用arm-linux-gcc工具来编译程序.
JZ2440开发板上电
* 插上电源,打开开关;可以看到linux的企鹅以及后面的Qt桌面;
* 连接串口,在PC上打开串口工具`MobaXterm`,点击左上角的`Session`,点击弹出窗口的`Serial`,Serial Port选择 Prolific开头的那个端口,波特率选择115200, Advance Settings里的Serial Engine选择`PuTTY`,硬件流控制选择`None`,点击`OK`.
* 按空格键,可以查看到开发板上运行的Linux内核系统,在这里可以运行Linux命令行指令. 可以理解为,这里直接连接了Linux开发板.