官方微信↓ 关 闭
w
加微博↓ 关 闭

 
f
  首页  | English  | 公司简介  |  OpenJTAG  |  JZ2440  |  Linux视频2期  |  Linux视频3期  |  下载  |  各地代理  |  论坛  |  黑名单  |  公司动态  |  联系我们
     
  关于我们:
   

我们是中国一个专注于嵌入式Linux培训视频的科技公司。
2008年编写了《嵌入式Linux应用开发完全手册》,2012年发布培训视频。
这本书和视频在中国的嵌入式Linux领域拥有良好的声誉。
按钮的

s1

 

  关于我们的视频:


  为什么要学习Linux:

在嵌入式领域,Linux的使用非常广范;现在兴起的智能硬件热潮,绝大部分硬件也是使用Linux操作系统。

视频的优点:
定位:让零基础的程序员学习我们的视频,就可以掌握嵌入式Linux开发的技能,包括bootloader开发、驱动开发、应用开发。

我们的视频的制作方法是独一无二的:
ga
1、不念PPT、不是对着现成的代码讲解;
2、用绘图板边画图边讲解完原理后,以巨大的精力当场编写、调试代码。
3、效果比面对面的培训还要好,因为视频可以反复看,更因为“从零写代码”。

视频的内容:

g

视频含有三部分,它们的目标如下:
1、裸机实验及bootloader
掌握写汇编代码的能力,可以分析任意裸板包括U-boot、内核里的相关汇编代码;可以在下图中看到U-BOOT的第一句代码

裸机

掌握常用的硬件部件的操作,比如GPIO,UART,I2C,LCD,触摸屏等;下图是在串口设备上发送字符‘A’的过程
gag
深入理解ARM体系统架构,可以写出具备中断功能的裸板程序,对程序现场的保存、恢复有所了解,这些原理适用于任何架构CPU,适用于内核及应用程序;下面是一张中断处理流程图
gsa
熟悉裸板程序的结构,给你一个Bootloader就能分析它的初始化部分、内存使用情况、链接地址、重定位、程序的相对跳转/绝对跳转等;在下图中你可以看到著名的init_sequence,它是一个初始化序列

gas

· 掌握Bootloader启动内核的原理,能完全自己写出一个Bootloader。
gas
2、驱动程序开发。
(1)开发能力:
· 掌握三大类驱动程序的框架:字符设备驱动、块设备驱动、网卡驱动
· 掌握驱动程序中各种操作:查询、中断、POLL、休眠-唤醒, 同步互斥, 异步通知, 定时器,上下半部等
① 查询
gas


② 中断
gsag

 

③ POLL
g

④ 异步通知

g


还有其他一些基本的操作比如休眠、唤醒等等。

· 能自己写出2期视频里讲到的各种驱动,它们已经涉及了工作中的绝大部分驱动
· 学习Linux驱动的套路:分配-设置-注册,掌握驱动的分析方法
gasg
(2)调试能力
· 掌握裸板调试方法:点灯、打印、用JTAG工具进行源码级别的调试,查看反汇编
· 掌握驱动调试方法:打印,自制打印,分析oops信息,栈回溯,理解内核原理然后修改内核,自制调试工具
· 掌握系统级别的应用调试方法:使用工具,修改内核自制工作
(3)效果检验
· 自己写一个bootloader, 它可以让你快速了解u-boot的核心功能
· 移植一个全新的u-boot, linux
· 重新构造根文件系统
· 移植所有驱动到3.4.2的内核去,你会在发现不同的内核下写驱动方法一样
3、项目开发
这部分视频含有3个项目:数码相框、视频监控、电源管理。会把项目开发中涉及的驱动、应用编程结合起来。
(1)数码相框
涉及:字符编码,矢量字体显示,编写通用Makefile,多线程编程,网络编程,远程调试,自制GUI。
数码相框演示视频:



掌握面向对象的模块化编程思想,搭建易扩展的程序框架
操作LCD,触摸屏,初次学习如何实现整个项目
有些产品需要更小巧的界面,耗费资源比较大的QT等就不适合,本项目可以直接应用于这类产品,已有学员在公司产品上用起来了



(2)视频监控
涉及:摄像头V4L2/ WIFI网卡/ 3G上网卡/ ALSA声卡等驱动程序和应用程序
Wifi小车桌面端操作视频:



Wifi小车手机端操作视频




接下来是一张视频监控桌面客户端的图片
g
WIFI 小车:
g
g
g


· 编写服务器程序传输视频数据
· 编写客户端程序在手机上显示视频等
· 掌握几大复杂驱动开发, 实现比较复杂的项目以提高应用编程水平

(3)电源管理(这部分内容正在录制中)
· 修改Bootloader,内核,应用以实现系统的休眠、唤醒
· 学习内核里电源管理框架掌握驱动的电源管理功能
· 结合应用程序实现整个系统的省电
评价:
g
视频的章节和要点:



第一部分 ARM体系结构与裸机实验

韦东山Linux视频第1

01课 环境搭建及工具、概念介绍

1部分的细化,以后就在Linux上工作了,环境必须先建好

02 GPIO实验

写出第1个裸板程序,掌握几条汇编指令,汇编怎么调用C

知道怎么操作GPIO,了解2440的启动过程

写出第1Makefile

03课 存储管理器实验

掌握SDRAM的初始化方法

掌握位置无关指令,相对跳转、绝对跳转

掌握代码重定位

04MMU实验

大概了解ARM里虚拟地址、物理地址的概念

了解内存映射的基理

掌握链接脚本的写法

感觉有难度的就跨过

05 NAND FLASH控制器

掌握第1个协议类接口:NAND的操作原理

掌握把NAND中的程序重定位的方法

06课 中断控制器

掌握ARM架构的中断处理过程

07课 系统时钟和UART实验

掌握提高系统时钟的方法,掌握串口的操作

08 LCD实验

掌握LCD的操作方法,掌握时序设置(建议同时看第2LCD驱动)

再次深入了解链接脚本,为何要清BSS

09 U-BOOT分析

结合<嵌入式Linux应用开发完全手册>了解u-boot的运行流程

理解u-boot命令实现方法,能自己添加一个命令

了解u-boot怎么传参数给内核,怎样启动内核

10课 内核启动流程分析

掌握Linux内核的启动流程:u-boot传入的机器ID的处理

u-boot传入的其他参数的处理

内核怎么去启动第1个应用程序

11课 构建根文件系统

1个进程的作用

根文件系统的构成

制作文件系统映象文件、烧写

12课节 字符设备驱动程序

简单的字符设备驱动:框架、查询方式、中断方式、poll

异步通知、同步互斥等基本概念

第二部分 高级驱动程序及调试

韦东山Linux视频第2

13课 输入子系统

12课里的驱动代码基本上都是自己写的,

13课分析内核自带的驱动,理解后再添加自己的硬件支持

输入子系统是很重要的,触摸屏、键盘、鼠标等都是这套框架

14课 驱动程序分层分离概念_总线驱动设备模型

内核里大量使用所谓的平台驱动、平台设备,这只是一个技巧

15 LCD驱动程序

掌握frame buffer这套自带驱动

掌握LCD的操作原理、时序设置

掌握编写硬件相关的LCD底层驱动

16课 触摸屏驱动程序

掌握电阻式触摸屏的操作原理

掌握输入子系统的第2个驱动(1个驱动是第13)

17 USB驱动程序

掌握USB驱动程序的框架:USB主机控制器驱动、USB设备驱动

掌握USB设备驱动的编写方法

掌握USB数据的读写方法

18课 块设备驱动程序

了解块设备驱动程序的框架,为何引入块设备驱动

掌握第1个最简单的块设备驱动程序:用内存模拟硬盘

19 NAND FLASH驱动程序

MTD设备的分层

NAND FLASH的操作原理

NAND FLASH的时序设置

NAND FALSH底层硬件驱动的设计

划分分区

20 NOR FLASH驱动程序

MTD设备的分层

NOR FLASH的操作原理

NOR FLASH的时序设置

NOR FALSH底层硬件驱动的设计

划分分区

21课 网卡驱动程序

了解第3类驱动:网卡驱动的框架

编写一个虚拟网卡驱动来加深了解

22课 网卡驱动程序

内存类接口芯片的操作方法:确定基址、设置时序

移植:编译、出错、解决错误、再编译

23 I2C设备裸板程序

掌握I2C协议,掌握在S3C2440上怎么操作I2C

24 I2C驱动程序

掌握I2C设备驱动程序的框架及编写方法

25课 字符设备驱动程序概念纠正之另一种写法

egister_chrdev之外的第2中写法:cdev

26 OSS模型声卡驱动的框架及UDA1341WM9876驱动移植

 

27 DMA

在内核下怎么使用DMA

28课 热拨插机制(hotplug)mdev的使用

结合内核代码了解设备节点的自动创建及删除

掌握mdev的使用方法

实现热拨插动作,比如让U盘自动挂载

29课 裸板调试

点灯、打印、用JTAG工具进行源码级(gdb,eclipse)的调试

进行源码级(gdb,eclipse)调试的前提条件

30课 驱动程序调试

printk打印,借用proc文件系统、分析oops信息、栈信息回溯

自制工具──寄存器编辑器

31课 从系统的角度进行应用程序调试

strace命令跟踪系统调用

gdbgdbserver调试

自制系统调用

编写输入模拟器

32课 新内核下的I2C驱动程序

新内核下的I2C驱动程序框架

编写I2C设备驱动程序

不写驱动程序,从用户态直接访问

编写I2C总线驱动程序

毕业班第1课 自己写bootloader

这是第3部分裸板的集成:启动代码、重定位、NAND操作、

传参数给内核、启动内核

从这个简单的程序,你可以理解u-boot的最重要功能

毕业班第2课 移植最新u-boot

这也是第3部分裸板的实际应用

毕业班第3课 移植3.4.2内核,构造根文件系统

 

毕业班第4课 移植驱动到3.4.2内核

有人说2.6.22.6内核太老了,你看了这一课就会发现

使用老内核可以让你学到更多,并且把驱动移到新内核很简单

第三部分    实战项目

韦东山Linux视频第3

1个项目

数码相框

1_数码相框之系统框架

总体讲述这个项目所涉及的框架,所需要的知识

2课第1_字符的编码方式

讲解怎样在LCD上显示文字, 从最简单的点限显示讲起,
到复杂的矢量字体显示──这在实际应用中大量用到,
这一课对LCD的操作也更加深入

2课第2_字符的点阵显示

2课第3.1_freetype理论介绍

2课第3.2_PC上测试freetype

2课第3.3_LCD上显示一个矢量字体

2课第3.4_LCD上显示多行文字

3课第1_额外项目_电子书之效果及框架

额外项目1,实现了在LCD上显示阅读文本
知识点:文件编码方式, UNICODE,
首次尝试以面向对像的方法编写应用程序

以面向对像的方法编写的程序很容易扩展, 这是一个示例

3课第2_额外项目_电子书之代码阅读及编写

3课第3_额外项目_电子书之指针的操作

3课第4_额外项目_电子书之链表的操作

3课第5_额外项目_电子书之在PC上显示

4_编写通用的Makefile

从零写出一个复杂的Makefile,工作中可以把它用于所有项目

5课第1_使用多种方法支持多输入_框架及轮询方式

以多种方式实现了输入事件的读取

5课第2_使用多种方法支持多输入_select方式

5课第3_使用多种方法支持多输入_多线程

6课第1_一小时学会网络编程_两个简单例子_tcp_udp

掌握网络编程,掌握远程打印(实际产品一般没有串口供你操作)

6课第2_修改电子书源码支持远程打印1

6课第2_修改电子书源码支持远程打印2

7_libjpeg的使用

使用开源库显示JPG图片

8课第1_数码相框功能及程序框架

这一节实现了数码相框的架构设计,
MainPage为例讲解了具体页面的程序设计,
MainPage理解后, 其他页面的操作是相似的

串讲了其他页面的代码,
改进了其中一个页面, 它实际上就是一个文件浏览器

8课第2_数码相框程序编写_先写框架

8课第3.1_数码相框程序编写_图标显示之bmp数据提取

8课第3.2_数码相框程序编写_图标显示之缩放

8课第3.3_数码相框程序编写_图标显示之测试

8课第4.1_数码相框程序GUI编写_MainPage显存管理

8课第4.3_数码相框程序GUI编写_MainPage输入功能

8课第4.4_数码相框GUI程序编写_MainPage测试

8课第5.1_数码相框效果演示及编译使用方法

8课第5.2_数码相框完整代码的讲解

8课第5.3_数码相框改进性能_支持中文

8课第5.4_数码相框课后作业及思路

2个项目 

远程视频监控

1课第1_摄像头驱动_V4L2框架分析

虚拟驱动程序忽略了复杂的硬件操作,
通过它可以快速理解V4L2视频驱动

1课第2_摄像头驱动_虚拟驱动vivi的测试

1课第3_摄像头驱动_虚拟驱动vivi彻底分析

1课第4_摄像头驱动_从零写一个虚拟驱动

2课第1_摄像头驱动_USB摄像头驱动框架分析

工作中我们不一定要自己写摄像头驱动,
但是要会修改,
会修改的前提是能看得懂,
看得懂的好方法是: 从零写一个

2课第2_摄像头驱动_从零写USB摄像头驱动之分析描述符

2课第3_摄像头驱动_从零写USB摄像头驱动之实现数据传输_框架

2课第4_摄像头驱动_从零写USB摄像头驱动之实现数据传输_简单函数

2课第5_摄像头驱动_从零写USB摄像头驱动之实现数据传输_设置参数

2课第6_摄像头驱动_从零写USB摄像头驱动之实现数据传输_URB

2课第7_摄像头驱动_从零写USB摄像头驱动之实现数据传输_调试

2课第8_摄像头驱动_从零写USB摄像头驱动之设置属性

3课第1_自制USB摄像头硬件的驱动编写_修改UVC

我们开发了一款USBCMOS接口二合一的摄像头,
用两种方法实现它的驱动程序

3课第2_自制USB摄像头硬件的驱动编写_修改MYUVC

4课第1_LCD上显示摄像头图像_效果_框架_准备工作

衍生项目:
加上保存图片功能的话, 这就是一个数码相机.
这个程序支持YUV,MJPEG,RGB格式的摄像头,
可以在LCDPC上显示摄像头图像

4课第2_LCD上显示摄像头图像_实现摄像头模块

4课第3_LCD上显示摄像头图像_实现转换模块

4课第4_LCD上显示摄像头图像_整合代码

4课第5_LCD上显示摄像头图像_调试测试

4课第6_LCD上显示摄像头图像_PC上显示

5课第1_CMOS摄像头之硬件原理

根据V4L2的规范,从零实现了CMOS摄像头驱动程序
并写一个测试程序把图像在LCD上显示出来

5课第2_从零写CMOS摄像头驱动1_画框架

5课第3_从零写CMOS摄像头驱动2_编写驱动程序框架

5课第4_从零写CMOS摄像头驱动3_初始化摄像头模块

5课第5_从零写CMOS摄像头驱动4.1_逐个讲解并设置摄像头控制器的寄存器

5课第6_从零写CMOS摄像头驱动4.2_逐个讲解并设置摄像头控制器的寄存器

5课第7_从零写CMOS摄像头驱动4.3_逐个讲解并设置摄像头控制器的寄存器

5课第8_从零写CMOS摄像头驱动5_编译调试

6课第1_额外项目2_便携式无线监控1_效果演示

衍生项目:把USB摄像头接到无线路由器上,使用手册连接无线路由器,在手机上观看摄像头图像

6课第2_额外项目2_便携式无线监控2_实现过程()

6课第3_额外项目2_便携式无线监控3_实现过程()

7课第1_使用WIFI网卡_准备工作及配置内核

介绍使用WIFI时的若干概念,
移植WIFI驱动程序,
编译开源工具使用WIFI网卡,
最后会写一个应用程序仿照手机实现设置、使用WIFI的功能

7课第2_使用WIFI网卡_概念及工具iw(STA模式)

7课第3_使用WIFI网卡_工具wpa_supplicant(STA模式)

7课第4_使用WIFI网卡_工具dhcp及全自动使用wifi

7课第5_使用WIFI网卡_AP模式

7课第6_使用WIFI网卡_仿手机写wifi操作程序

8课第1_3G上网卡_工具及使用

使用开源工具使用3G上网卡,并仿照开源工具编程使用它

8课第2_3G上网卡_编程自动切换模式

8课第3_3G上网卡_编程自动确认拨号端口

9课第02_ALSA声卡_裸板之编写程序_P

先写出声卡的裸板程序,这使得我们可以掌握声卡的硬件操作过程;

再分析ALSA驱动程序的框架及调用过程,

然后从零写出一个ALSA声卡驱动,这使得我们可以彻底掌握ALSA驱动。

虽然工作中我们很可能只是移植厂家提供的驱动,但是前提是我们要对驱动框架有深入的理解,而最好的学习方法就是从零写出来。

作为移植的示例,我们还移植了WM8976的声卡驱动。

最后,简单地写了一个ALSA应用程序。

9课第03_ALSA声卡_裸板之编译和测试1

9课第04_ALSA声卡_ALSA驱动框架

9课第05_ALSA声卡_ASoC驱动框架

9课第06_ALSA声卡_体验声卡

9课第07_ALSA声卡_分析调用过程

9课第08_ALSA声卡_从零编写之框架

9课第09_ALSA声卡_从零编写之参数设置

9课第10_ALSA声卡_从零编写之数据传输

9课第11_ALSA声卡_从零编写之调试

9课第12_ALSA声卡_从零编写之添加音量控制

9课第13_ALSA声卡_从零编写之WM8976

9课第14_ALSA声卡_移植原厂WM8976驱动

9课第15_ALSA声卡_修改内核声卡BUG

9课第16_ALSA声卡_编写ALSA声卡应用程序

10课第1_讲解mjpg-streamer_移植_效果演示

我们使用开源工具mjpg-streamer来作为服务器端以传输视频,这本课程里,先分析它的源码;然后写一个PC客户端程序以接收视频并显示出来。

10课第2_讲解mjpg-streamer_框架

10课第3_讲解mjpg-streamer_源码分析()_主进程

10课第4_讲解mjpg-streamer_源码分析()_输入通道_视频采集过程

10课第5_讲解mjpg-streamer_源码分析()_输出通道_视频传输过程

10课第6_讲解mjpg-streamer_自己写客服端()

10课第7_讲解mjpg-streamer_自己写客服端()

10课第8_讲解mjpg-streamer_自己写客服端_编译调试

第1课第1节_电源管理概述

 
先介绍电源管理,再修改uboot支持电源管理命令,继而修改驱动添加电源管理,介绍runtime_PM框架,regulator,
最后编写支持开关机的应用程序

第2课第1节_在uboot实现电源管理_编写休眠功能
第2课第2节_在uboot实现电源管理_编写唤醒功能
第2课第3节_在uboot实现电源管理_调试
第3课第1节_系统睡眠模型_Linux的suspend流程
第3课第2节_系统睡眠模型_修改内核或驱动以使用suspend功能
第3课第3节_系统睡眠模型_给驱动程序添加电源管理功能
第4课第1节_runtime_PM框架第3课第3节_系统睡眠模型_给驱动程序添加电源管理功能
第4课第2节_runtime_PM修改驱动程序和使用
第5课第1节_regulator系统的概念并编写代码
第5课第2节_regulator系统之编译测试
第6课第1节_APP_修改数码相框以支持自动关闭LCD
第6课第2节_APP_编写支持开关机(suspend)的应用程序

第7课_从系统角度考虑电源管理,我们要学习更多


FAQ:



1.如何获得并播放视频?

下载视频:
http://www.100ask.org/download.html

下载播放器huplayer:
http://cn.haihaisoft.com/huplayer.aspx

你购买后,我们把播放密码发EMAIL给你,你用huplayer打开视频时输入密码即可观看。

2.视频的播放有何限制?

绑定硬件,只能在1台windows电脑上播放;
更换硬件或是重装系统时将无法播放,此时发邮件给weidongshang@qq.com即可,我们收到邮件后会解除原来的绑定,你就可以继续观看了。

3.观看视频时,需要联网吗?

验证用户名时,才需要联网;平时观看不需要联网。用户名是每2月验证一次。
如果你确定某段时间不能上网,可以运行huplayer,点击: "菜单->选项->Tweaks: Delete License in your PC",再去打开加密文件,就会立刻要求你验证。这样,就能从当前时间起离线使用2月了。

4.我用的是其他开发板,这视频能用吗?

驱动视频是以S3C2440开发板为例录制的,里面讲解的程序并不能照搬到其他开发板;但是原理是相似的,不同的只在于寄存器的操作。使用其他开发板也有好处,虽然你得自己修改代码,但是修改过程中会让你学到更多东西。
应用视频适用于所有运行Linux的开发板。

5.为什么你们还使用ARM9开发板作为例子?

S3C2440开发板在嵌入式Linux初学领域的使用非常广泛,所以我们以它为例子录制视频。
如果你是软件工程师, 无论是ARM9、ARM11、A8还是A9,对我们来说是没有差别的;
差别在于芯片,不在于CPU核。原理是相通的,差别在于寄存器操作不一样。
因为我们写驱动并不涉及CPU的核心,只是操作CPU之外的设备,只是读写这些设备的寄存器

比如ARM9的S3C2440和ARM11的S3C6410或者是A8的SP5V210, 在操作NAND FLASH时只是去操作这些芯片的NAND FLASH控制器。根本不涉及ARM7/9或是A8的CPU核。

6.学习过程中碰到问题,我从哪里可以获得技术支持:

论坛:www.100ask.org
http://100ask.org/bbs/forum.php




版权所有:百问网
电话:0755-86200561 邮编:518114 技术支持Email: weidongshan@qq.com
地址:广东省深圳市龙岗区布吉南湾街道平吉大道建昇大厦B1505
本站备案号:粤ICP备13035650号-1
建议使用1024×768分辨率、IE4.0以上版本浏览