韦东山 订阅
韦东山 [1]  ,男,出生于1981年,汉族,中国共产党员,毕业于中国科学技术大学,电子专业、软件专业双学位,拥有10多年嵌入式开发经验。 展开全文
韦东山 [1]  ,男,出生于1981年,汉族,中国共产党员,毕业于中国科学技术大学,电子专业、软件专业双学位,拥有10多年嵌入式开发经验。
信息
出生日期
1981年
职    业
it工程师
毕业院校
中国科学技术大学
国    籍
中华人民共和国
中文名
韦东山
民    族
汉族
专    业
电子专业、软件专业
韦东山简介
国内著名的培训机构特聘讲师。一直以来从事产品设计(硬件、底层软件)定制服务,帮各公司解决Linux方面 的技术难题。 [2]  擅长ARM系列方面的硬件原理图设计, 精通ARM、MIPS、Blackfin等架构处理器的Linux底层系统开发。
收起全文
精华内容
下载资源
问答
  • 韦东山-首批华为鸿蒙系统课程开发者

    万次阅读 多人点赞 2020-09-11 16:42:45
    QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载) 交流群二:QQ群:536785813(单片机-嵌入式) 公 众 号:百问科技 版本 日期 作者 说明 V1 2020 韦东山 资讯消息 01 鸿蒙 OS 2.0 正式开源 昨天下午,在...

    在线课堂:https://www.100ask.net/index(课程观看)
    论  坛:http://bbs.100ask.net/(学术答疑)
    开 发 板:https://100ask.taobao.com/ (淘宝)
         https://weidongshan.tmall.com/(天猫)
    交流群一:QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载)
    交流群二:QQ群:536785813(单片机-嵌入式)
    公 众 号:百问科技


    版本日期作者说明
    V12020韦东山资讯消息

    在这里插入图片描述

    01 鸿蒙 OS 2.0 正式开源

    昨天下午,在华为开发者大会 2020 上,华为消费者业务 CEO 余承东宣布推出鸿蒙 OS 2.0 (HarmonyOS 2.0),正式面向应用开发者发布鸿蒙 OS 的 Beta 版本,即日起开发者可以获得面向大屏、手表、车机的 SDK、工具、文档和模拟器,今年 12 月将发布手机版本的 SDK、工具、文档和模拟器。明年华为智能手机将全面升级支持鸿蒙 2.0。

    华为高管王成录邀请开发者共建鸿蒙 OS生态
    与此同时,余承东宣布将鸿蒙 OS 的代码捐赠给开放原子开源基金会进行开源孵化,并公布了鸿蒙系统的开源路标:

    从9 月 10 日起,鸿蒙 OS 将面向大屏、手表、车机等 128KB-128MB 终端设备开源;

    2021 年 4 月,面向内存128MB-4GB 终端设备开源;

    2021 年 10 月,将面向 4GB 以上所有设备开源。

    开源路标
    https://gitee.com/isrc_iscas可知,韦东山老师作为外部开发者已经进驻

    鸿蒙开源基金会社区-OpenHarmony激进特征社区版,简单介绍一下OpenHarmony激进特征社区版,它是中国科学院软件研究所智能软件研究中心主持,在开放原子开源基金会(OpenAtomFoundation)的指导和帮助下,由社区力量共建。

    百问网与ISRC合作
    目前贡献者包括中国科学院软件研究所智能软件研究中心几位同事,韦东山老师,后续将有更多贡献者陆续加入,也欢迎广大社区成员发起issue、提交代码。

    成员截图

    02 韦东山作为首批鸿蒙HarmonyOS系统课程开发者

    从8月初开始在华为封闭内训一个多月,期间多次通宵调试,为鸿蒙开发者生态贡献自己的微薄力量,有图有真相。
    韦老师抱着鸿蒙奖杯
    奖杯
    通宵完发个朋友圈

    03 初步成功移植鸿蒙HarmonyOS到imx6ull

    还好努力没有辜负,韦老师在华为内部成功移植了4个版本的鸿蒙liteos-a到imx6ull上,但是代码未审核,不能带出来。于是昨晚基于开源版本,开始了第五版本的移植,不过还没完全移植完,移植完后会陆续发布源码,文档和录制鸿蒙liteos-a视频。

    鸿蒙liteos-a移植到imx6ull效果图

    04 首款搭载鸿蒙OS的第三方开发板隆重上架

    隆重介绍百问网独家开发的imx6ull_mini 开发板,可能是全球首款搭载华为鸿蒙OS的第三方教学开发板,裸板只要299,最低成本体验鸿蒙OS。

    该开发板既支持Linux , 也支持鸿蒙OS,Linux方面,提供超千页文档,一百多讲视频,开源共享;鸿蒙方面,目前正在紧急编写文档,韦老师移植了5次,已经对鸿蒙OS移植到imx6ull熟悉到想哭了,相信对应的移植文档,视频很快就会跟大家见面。

    鸿蒙OS视频课程目录规划(开源共享):
    鸿蒙OS内核liteos-a 操作系统框架
    鸿蒙OS内核liteos-a 框架分析
    鸿蒙OS内核liteos-a 启动流程
    鸿蒙OS内核liteos-a 移植1:串口
    鸿蒙OS内核liteos-a 移植2:MMU
    鸿蒙OS内核liteos-a 移植3:中断体系
    鸿蒙OS内核liteos-a 移植4:定时器
    鸿蒙OS内核liteos-a 移植5:文件系统
    鸿蒙OS内核liteos-a 移植6:第一个APP

    既支持Linux,也支持鸿蒙OS
    imx6ull_mini 正面图
    imx6ull_mini 带屏效果
    imx6ull_mini 斜视图
    说明:
    目前百问网推出2个版本的imx6ull开发板:imx6ull pro和imx6ull mini。
    就鸿蒙而已,因为仅imx6ull mini有JTAG接口,推荐鸿蒙使用imx6ull mini板子。
    删减部分是:HDMI/4G+SIM卡/wifi+BT/外置声卡,从而形成imx6ull mini板子。
    其余功能两个板子是一致的。

    imx6ull_mini_emmc 鸿蒙开发板购买链接:
    https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-23041403059.38.74921042IIJdLL&id=627354879978&rn=ea27def66be65c92521a62a323777969&abbucket=2

    淘口令
    复制淘口令打开手机淘宝APP即可看到
    淘口令: V q A L c V a n B e S VqALcVanBeS VqALcVanBeS

    05 常见问题

    1. 鸿蒙OS 就是Linux?

    Windows是一个操作系统,但是Linux只是一个内核。Windows除了有内核,还有各种子系统,比如UI、桌面等等。而Linux本身只具备进程调度、文件管理等等内核的功能,它没有桌面系统等等这些让普通人能直接使用的功能。要使用Linux,还需要在它之上配齐各类APP。

    而鸿蒙要对标的而不是对标Linux。而是Windows、安卓、IOS这样的能直接使用的完整系统!

    2. 作为开发者,如何评价鸿蒙OS ?

    有性能不太强的芯片上使用liteos-a内核,在手机这类设备上还是使用Linux。这次在GITEE上发布的就是liteos-a,其他子系统的发布可能没那么快。我有幸在8月份作为外部开发者进入华为,把liteos-a移植到第3方芯片。接触liteos-a比较深入,对它的评价是:优秀!

    这是一个轻量级的内核,支持MMU,支持进程隔离,POSIX接口兼容。理论上在Linux中能跑的很多APP稍加修改就可以在liteos-a上运行。

    为什么说要修改呢?比如说触摸屏驱动接口就跟Linux有点不一样,我不知道liteos-a为何不把这些常用外设的接口做得跟Linux完全一样,也许是版权问题,也许是政治问题。

    但是这不影响liteos-a成为一个优秀的操作系统,它是实时操作系统,Linux不是,它的代码量很小,启动速度快,内核中各种子系统都比较薄,容易理解。

    3. 鸿蒙OS 移植难度如何?

    我在华为里面只用了7天左右就把liteos-a移植到了imx6ull上,把最小系统运行起来了(支持LCD、触摸屏、基于RAM的根文件系统)。

    如果我在华为内部写的代码、文档,他们审核后能发给我,那么根据我的文档,以及即将录制的视频,我相信有单片机基础的人用1、2天就可以在任一款cortex A7开发板上移植好liteos-a。

    为什么是cortex A7 ?因为liteos-a目前仅支持cortex A7,开放原子基金会的人,或者社区,应该会移植到其他架构上,就看大家了!

    06 附鸿蒙 OS官方相关资料

    鸿蒙 OS 开源项目:
    https://www.openatom.org/openharmony
    鸿蒙 OS 代码仓库:
    https://openharmony.gitee.com/
    鸿蒙 OS官网:
    https://www.harmonyos.com
    基金会:
    https://www.openatom.org

    *文中部分内容参考了InfoQ

    展开全文
  • 如何学习嵌入式Linux_韦东山

    万次阅读 多人点赞 2020-05-13 16:30:07
    QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载) 交流群二:QQ群:536785813(单片机-嵌入式) 公 众 号:百问科技 版本 日期 作者 说明 V1 2020 韦东山 适用于嵌入式Linux初学者 我在100ASK_IMX6ULL售后...

    在线课堂:https://www.100ask.net/index(课程观看)
    论  坛:http://bbs.100ask.net/(学术答疑)
    开 发 板:https://100ask.taobao.com/ (淘宝)
         https://weidongshan.tmall.com/(天猫)
    交流群一:QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载)
    交流群二:QQ群:536785813(单片机-嵌入式)
    公 众 号:百问科技


    版本日期作者说明
    V12020韦东山适用于嵌入式Linux初学者

    我在100ASK_IMX6ULL售后群里,发现很多初学者只有单片机基础,甚至没有单片机基础。在学习Linux时,对很多概念比较陌生,导致不知道学什么,也不知道学了之后有什么用。

    从事嵌入式Linux培训12年来,我们写过很多《关于如何学习linux》的文章,这是最新的,本文将不断更新。

    第1章 单片机和Linux的区别

    1.1 有哪些产品使用单片机或Linux

    • 所有的电子产品,所用技术都可以认为要么是单片机,要么是Linux;GUI方面主要是QT/Android,它们都是运行于Linux之上的。
    • 也许你不服!不是还有ucos、vxwork、wince、IOS吗?下面这个图是关于操作系统的占比,是2016年的,我没找到更新的图,但是很有参考意义:
    • 我们说的单片机不使用操作系统,在上图中没有体现出来。但是使用单片机设备肯定远远超过Linux。很多人也是先学习单片机,从单片机进入电子工程师行业
    • 日常生活中,有哪些产品使用单片机、Linux呢?下面举一些例子:
      在这里插入图片描述在这里插入图片描述在这里插入图片描述
    • 我们设计一个产品时,是使用单片机还是Linux,取决于成本:硬件成本、软件成本、维护成本、升级成本。而不应该根据个人偏好来选择:我喜欢单片机,所以就排斥使用Linux;我喜欢Linux,就排斥使用单片机。为了有更多的选择,我们需要既懂单片机,又懂Linux。

    1.2 在硬件操作上单片机和Linux是类似的

    • 以点灯为例,
      无论是单片机还是Linux,我们要做的事情都一样:
    1. 看原理图,确定引脚是哪一个,确定它输出什么电平才可以
    2. 看芯片手册,确定要怎么操作寄存器
    3. 写程序

    但是,怎么编写程序,单片机和Linux有很大不同。

    1.3 在单片机中点灯、使用LCD

    • 使用单片机开发程序时,我们一上来就写一个main函数,下面是一些简化的代码:
      在这里插入图片描述
    • LED程序里面的init_led、led_on、led_off函数是你一个人写的,爱取什么名就取什么名,爱怎么写就怎么写。
    • LCD程序里的函数也是你写的,完全是自由发挥。
    • 很多单片机项目不是很复杂,2、3个人从上到下统统搞定,里面的函数大多时间是直接去读写寄存器。
    • 很多单片机项目严重依赖于硬件,换一个芯片后怎么办?重写一套代码呗。
    • 在单片机程序里,没有应用程序、驱动程序的概念,很可能一个人包揽了硬件设计、模块调试(或称之为驱动)、功能开发(或称之为应用)的全部活。

    1.4 在Linux中点灯、使用LCD

    • 在Linux中,不允许应用开发人员直接去操作硬件,比如你想点个灯,不好意思,你无法直接访问寄存器;你需要通过驱动程序来访问寄存器。
    • 为什么?有几大原因:
    1. Linux系统中运行着众多程序,必须保证质量差的程序无法破坏系统
      假设你写的程序比较烂,那我不能让你去随便访问寄存器,把系统搞崩溃了怎么办?你本意是去点灯,但是你看错了寄存器,你把电源关了怎么办?

      所以这些操作硬件的活,还是交给信得过的人来做吧:交给驱动工程师,他既懂硬件又懂软件。

    2. 保证程序的可移植性
      编写应用程序时,大家都使用统一的函数,以后换一个芯片时,应用程序不用变;只需要根据这个接口提供驱动程序就可以了。

    3. 团队协作
      使用Linux系统的项目一般比较大,术业有专攻,一个人不太可能从上到下都全部掌握。比如做人脸识别项目,有擅长做图像处理的,他可不管你要用多少种摄像头,有图像给他就可以。而多种摄像头的硬件操作方法各有不同,这些交给驱动程序工程师。

    • 所以,在Linux中应用程序和驱动程序是分开的。

    • 以LED、LCD程序为例,简化的代码如下:
      在这里插入图片描述

    • 也许你已经大概猜出来了,应用程序怎么调用驱动程序?通过标准的接口:

    1. open
      打开驱动程序。
    2. read/write
      读、写数据。
    3. ioctl
      传入各种参数,获得各种参数。
    4. mmap
      内存映射,比如映射之后,应用程序可以直接读写LCD的显存。
    • 你看!从这些接口里,我们根本看不到寄存器的操作。底层的程序驱动会根据这些调用,去设置寄存器、操作硬件。
    • 所以,我高大上的应用工程师,干嘛苦哈哈地去看原理图、看在片手册、读写寄存器,搞不好还要去调试硬件BUG。这些脏活、累活就交给驱动工程师吧。客户的需求千变万化,我996时间都不够用了。
    • 我上懂软件、下懂硬件的驱动工程师,肯定不能把这么重要的活交给你去做了,把我的系统搞崩溃了怎么办。
    • 开玩笑、开玩笑、开玩笑的,有应用工程师、驱动工程师的优劣之分,大家都是为了做出产品。现在有一个趋势,一个任务从上到下你都需要懂,这就是所谓的全栈工程师。
    • 还是以LED为例,应用程序和驱动程序的协作如下图所示:
    • 在Linux中,“一切皆文件”,要访问某个硬件,也是要打开文件、读写文件。应用程序要根据标准的文件接口:open/read/write/ioctl/mmap等来访问驱动程序。
    • 既然如此,怎么写驱动程序呢?最简单的方法就是:APP要调用open来打开驱动程序,那驱动‘程序里就提供一个xxx_open函数来初始化硬件;APP要调用write来写数据,驱动程序里就提供一个xxx_write函数来接收数据并操作硬件。
    • 用xxx_open、xxx_write来构成一个驱动程序,这就是驱动框架。
    • 怎么实现这些xxx_open、xxx_write函数?我们要做的事情跟单片机是类似的,一样要去看电路图、看芯片手册,然后在这些函数里读写寄存器:这称为硬件操作
    • 所以,Linux驱动程序= 驱动框架 + 硬件操作。
    • 有单片机基础的人,对硬件操作比较熟悉了,把重点放在驱动框架上就可以。
    • 高能预警:驱动框架可不简单,对于LED来说是简单,但是还有更复杂的驱动程序,它要考虑“通用”,这很要命。

    第2章 嵌入式Linux快速入门

    • 这几天在群里跟学员聊天,有一位学员的学习方法很好:先观其广,再究其深。有时候要“不求甚解”,很多时候保持疑问先学下去,这些疑问就自然解决了。
    • 比如课程中涉及汇编知识,如果你要彻底弄清楚,你需要去学习《ARM架构与编程》;当你学完这本书,你的同学搞不好已经可以上手工作了。

    2.1 短期的目标是什么

    • 我们先把学习目标定下来:快速了解嵌入式Linux开发的流程,知道要学什么,具备跟从业者交流的能力。

    2.2 一个嵌入式Linux系统的组成

    在这里插入图片描述
    在这里插入图片描述

    • 下面我们用类比和逻辑推导出嵌入式Linux系统的组成,没错,“推导”。
      从上图可以知道:
    1. 组成
      嵌入式Linux系统
      = bootloader + linux内核 + 根文件系统(里面含有APP)。

    2. bootloader
      它的目的是启动内核,去哪等读内核?读到哪里?去Flash等外设读内核,存到内存里去。所以需要有Flash里外设的驱动能力,为了调试方便还会有网络功能。

      所以,可以认为 booloader = 裸机集合,它就是一个复杂的单片机程序。

    3. Linux内核
      Linux内核的最主要目的是去启动APP,APP保存在哪里?保存在“根文件系统”里。“根文件系统”又保存在哪里?在Flash、SD卡等设备里,甚至可能在网络上。所以Linux内核要有这些Flash、SD卡里设备的驱动能力。

    • 不仅如此,Linux内核还有进程调度能力、内存管理等功能。
    • 所以:Linux内核 = 驱动集合 + 进程调度 + 内存管理等。

    2.3 要学习bootloader吗

    • Bootloader有很多种,常用的叫作u-boot。
    • 在实际工作中,对于u-boot基本上是修修改改,甚至不改。但是u-boot本身是很复杂的,比如为了便于调试,它支持网络功能;有些内核是保存在FAT32分区里,于是它要能解析FAT32分区,读FAT32分区的文件。
    • 花那么多精力去学习u-boot,但是工作中基本用不到,这对初学者很不友善。
    • 所以,对于初学者,我建议:理解u-boot的作用、会使用u-boot的命令,这就可以了
    • 如果你的工作就是修改、完善bootloader,那么再去研究它吧。

    2.4 要学习Linux内核、要学习驱动程序吗

    • 之前我们说过Linux内核 = 驱动集合 + 进程调度 + 内存管理等,如果要学习Linux内核,从驱动程序入手是一个好办法。
    • 但是人人都要学习Linux内核、人人都要学习Linux驱动吗?显然不是。
    • 作为初学者,懂几个简单的驱动程序,有利于工作交流;理解中断、进程、线程的概念,无论是对驱动开发、应用程序开发,都是很有好处的。
    • 所以对于初学者,建议前期只学习这几个驱动:LED、按键、中断。
    1. LED驱动程序
      这是最简单的驱动程序。

    2. 按键驱动程序
      它也比较简单,从它引入“中断”

    3. 中断
      从“中断”它可以引入:休眠-唤醒、进程/线程、POLL机制、异步通知等概念。这些概念无论是对驱动开发,还是对应用开发,都很重要。

    • 所以,对于初学者,我建议必须学习这几个驱动:LED、按键、中断。
    • 入门之后,如果你想从事内核开发、驱动开发,那么可以去钻研几个驱动程序(输入系统、I2C总线、SPI总线等),掌握若干个大型驱动程序后,你对内核的套路就有所了解了,再去研究其他部分(比如进程管理、文件系统)时你会发现套路是如此通用。
    • 摄像头(VL42)、声卡ALSA驱动是Linux中比较复杂的2类驱动,它们是很难的,如果工作与此相关再去研究。

    2.5,要学习Linux应用程序吗?先学一些基础技能

    • 要学,即使以后你只想研究内核,一些基本的应用开发编写能力也是需要的:
    1. 基本设备的访问,比如LCD、输入设备
    2. 进程、线程、进程通信、线程同步与互斥
    3. 休眠-唤醒、POLL机制、信号
    4. 网络编程
    • ①②③部分的知识,跟驱动有密切的关系,它们是相辅相承的。
    • 掌握了基本驱动开发能力、基本应用开发能力之后,在工作中你就可以跟别人友好沟通了,不至于一脸懵逼。

    2.6,应用程序是怎么启动的?要了解一下根文件系统

    • 你辛辛苦苦写出了应用程序,怎么把它放到板子上,让它开机就自动启动?
    • 你写的程序,它依赖于哪些库,这些库放到板子上哪个目录?
    • 怎么做一个可升级的系统?即使升级中途断电了,也要保证程序至少还可以运行老的版本?
    • 这些都需要我们了解一下根文件系统。
    • 先了解一下init进程:它要读取配置文件,根据配置文件启动各个APP。
    • 了解了init进程,你就了解了根文件系统的组成,就可以随心所欲裁剪系统,为你的项目制作出最精简的系统。

    第3章 学习方法

    3.1,先不要打破砂锅问到底

    • 嵌入式涉及的东西太多太杂了,如果心里没有主线,碰到什么都要去研究个透彻,最终反而忘记自己要学什么了。
    • 嵌入式涉及硬件知识、软件知识,软件里涉及汇编、ARM架构、C语言、Makefile、Shell;又分为bootloader、内核、驱动、基本的APP、GUI。
    • 比如我们会用到Makefile,了解它的基本规则,会用我们提供的Makefile就可以。
    • 不需要深入研究那些make函数,因为在工作中都有现成的Makefile给你使用,不需要自己去编写一套Makefile。何必花上好几天去深入研究它呢?
    • 比如我们会用到bootloader,难道又要花上几个月来深入研究u-boot吗?工作中基本不需要改u-boot,会用那几个命令就可以。
    • 甚至有些学员先去买本shell的书来学习shell命令,何必?我们在视频中用到什么命令,你不懂时再去百度一下这些命令就可以了。
    • 不要脱离初学者的主线:应用基础、驱动基础。有了这2个基础后,你想深入研究某部分时,再去花时间吧。

    3.2,思路要清晰,不怕抄代码

    • 视频里的代码,请你一定要自己去写一次、写多次。为什么我现在写驱动那么熟?我2009年在华清远见上课时,
    • 每次上课我都要给学生写一次那些驱动,十几次下来闭着眼睛都知道内核的套路了。
    • 记不住那些函数?我也记不住,我都是去参考同类的驱动程序,这又不是闭卷考试。
    • 但是要理清楚思路,你写这个程序要完成什么功能、怎么实现这些功能?这个要弄清楚。
    • 有了思路后再写代码,不知道怎么写?没关系,看看视频,看看示例,然后关闭视频看看能否自己写出来。

    3.3,对自己的方向很了解,我只能带你到这里了

    • 我的专长是操作系统,是快速地带领大家掌握一些项目开发的基础知识。
    • 如果你决定深入研究某方面时,我并不能带你多久。你要去看源码,去看这方面的专业书籍。
    • 比如想深入钻研内核的内存管理时,它有页表映射(你需要阅读ARM架构的手册)、SLAB分配器、vmalloc/malloc实现、mmap实现、缺页中断、父进程子进程之间的页面管理等等,内容非常多。有时候连书籍都没有,你需要直接啃代码。
    • 当你想从事某个行业时,就需要深入研究行业相关的知识。
    • 比如CAN总线,它可以写成一本书:CAN协议、CAN报文、Socket CAN、车身网络拓扑结构,CAN应用报文,CAN网络管理报文,CAN诊断报文。
    • 想做物联网网关,需要深入研究MQTT,MQTT协议相对简单,但是MQTT英文原版协议有130多页,中文版有近100页,是一本小书了。
    • 每个行业都有自己的业务逻辑,在掌握基本的编程能力之一,你需要结合具体的业务去深入学习。
    展开全文
  • 收藏!韦东山所有课程详细目录介绍(最新)

    万次阅读 多人点赞 2018-04-25 17:55:11
    讲师韦东山简介 毕业于中国科学技术大学物理软件双学位, 畅销书《嵌入式 Linux 应用开发完全手册》作者,10 多年嵌入式 LINUX 编程一线开发经验。 为人低调谦逊, 授课风格非常有效。 不跟着PPT念, 看重...

    在线课堂:https://www.100ask.net/index(课程观看)
    论  坛:http://bbs.100ask.net/(学术答疑)
    开 发 板:https://100ask.taobao.com/ (淘宝)
         https://weidongshan.tmall.com/(天猫)
    资料下载&百问网技术交流群,百万嵌入式工程师聚集地:
    https://www.100ask.net/page/2248041
    公 众 号:百问科技


    版本日期作者说明
    V1.12020.11.26韦东山适用于嵌入式Linux初学者

    讲师韦东山简介

    在这里插入图片描述

    • 韦东山,深圳百问网科技有限公司技术总监。

    • 毕业于中国科学技术大学物理软件双学位。

    • 15年嵌入式一线编程开发经验。

    • linux类畅销书《嵌入式Linux应用开发完全手册》作者。

    • 长期从事嵌入式教学工作,对嵌入式初学者的痛点了如指掌并能通俗易懂讲出来,10年以来,孜孜不倦的培育了几万名优秀嵌入式工程师。

    • 10年以来始终把学员权益放在第一位。

    • 脚踏实地的做售后,做答疑,是嵌入式 Linux /Android线上培训领域的佼佼者。

    • 履历: 2003 年在创业公司领导团队开发车载手机、电话 ; 2005 年在中兴通迅负责网络电视、机顶盒、IPCamera多个项目的底层系统开发 ; 2007 年编写书籍《嵌入式 Linux 应用开发完全手册》; 2008年成为自由职业者,专门承接项目并帮助企业解决各种疑难问题, 兼职华清远见、尚观科技特邀讲师; 2012年至今创办深圳百问网科技有限公司,专注嵌入式Linux/Android 视频培训, 陆续为社会输送了几万名嵌入式行业高级专业人才。


    韦东山视频总体介绍

    ARM裸机1期加强版(新1期) 与旧1期的区别
    旧1期,2010年开始录,主要帮朋友推销开发板,没想要进入培训行业,2017年9月,重录第1期裸板视频,命名为新1期。

    为什么要重录?
    因为很多同学反映没有Linux操作经验、没有单片机基础很难看懂旧1期。

    录老视频时,本意是配合书籍《嵌入式LINUX应用开发完全手册》学习,并没有面向0基础的同学,新1期有几个主要特点:

    1. 比旧1期详细70%,对旧1期的易错点,难点重点剖析,
    2. 适合人群:没有LINUX操作经验、没有单片机基础、没有硬件知识的,
    3. 只要求你会简单的C语言,计算机基础和数电基础,
    4. 所有代码现场编写、现场调试,绝对不会拿着现成的代码给你分析。
    5. 新开发环境,开发更便捷

    《单片机核心/RTOS必备_硬件编程大全》(更新中···)

    1. 嵌入式概念及硬件组成
    2. 第一个点灯程序
    3. ARM架构
    4. 第1个程序深度解析
    5. 使用按键控制LED
    6. 串口UART编程
    7. keil_gcc_Makefile
    8. 代码重定位

    观看地址
    https://www.100ask.net/detail/p_5f85731ee4b06aff1a03d3d3/8

    文档资料下载
    http://weidongshan.gitee.io/informationdownloadcenter/videos_tutorial/embedded_linux/MCU_RTOS_HW/index.html


    《嵌入式Linux应用开发基础知识》

    • GCC编译器的使用
    • Makefile的使用
    • 文件I/O
    • Framebuffer应用编程
    • 文字显示及图象显示
    • 输入系统应用编程
    • 网络通信
    • 多线程编程

    观看地址
    https://www.100ask.net/detail/p_5f338ae3e4b075dc42ad44a1/8

    文档资料下载
    http://weidongshan.gitee.io/informationdownloadcenter/videos_tutorial/embedded_linux/full_range_phase1/index.html


    《嵌入式Linux驱动开发基础知识》

    • 使用"LED/按键/中断",
    • 引入"查询/休眠-唤醒/POLL/异步通知"等基础知识,
    • pinctrl/gpio/设备树使用,
    • 硬件中断/软件中断/中断上下文/中断的线程化处理

    这些是必备的知识,即使你只做APP开发,这些知识也应该掌握。

    本系列课程通用于:

    1. 100ASK_IMX6ULL_PRO
    2. 100ASK_IMX6ULL_MINI
    3. 100ASK_STM32F103
    4. 100ASK_STM32MP157
    5. 100ASK_AM335X

    《实战项目-电子产品量产工具》

    这个项目里,

    我们教给你的是“基础能力”:

    1. 良好的编程规范
    2. 面向对象的编程思想
    3. 练习对事物的抽象能力
    4. 练习对整个系统的把控

    这些学到手后,
    这个项目可以无限扩展(例如:智能点菜终端、自助收银机、银行ATM机、排队管理系统、贴片机)

    观看地址
    https://www.100ask.net/detail/p_5f181e8fe4b0df48afbce201/8

    文档资料下载

    http://weidongshan.gitee.io/informationdownloadcenter/videos_tutorial/embedded_linux/full_range_phase1/index.html#


    《跟韦东山学习鸿蒙系统之最小系统移植+驱动开发》(更新中···)

    移植鸿蒙最小系统:UART、MMU地址映射、定时器中断、存储设备驱动、根文件系统

    鸿蒙驱动:LCD、I2C、电容屏、EMMC、网卡等

    观看地址
    https://www.100ask.net/detail/p_5f992670e4b0f34a383ff931/8


    《新1期与2期间的衔接》(免费)

    1. uboot编译与分析
    2. 内核编译与分析
    3. 文件系统分析与制作
    4. linux 驱动入门

    观看地址:https://www.100ask.net/detail/p_5e5c625e5937a_7hU6qJy9/6

    文档资料下载:http://weidongshan.gitee.io/informationdownloadcenter/videos_tutorial/embedded_linux/linkup/index.html


    《第2期Linux驱动大全》

    深入写驱动
    特点:抛弃基于三星官方驱动的移植,完全从零写驱动,精讲驱动原理,主要内容包括:

    1. 输入子系统
    2. lcd
    3. 触摸屏
    4. nand
    5. nor
    6. 网卡
    7. USB
    8. SPI
    9. i2c
    10. 声卡
    11. DMA
    12. 裸机驱动应用调试

    观看地址:https://www.100ask.net/detail/p_5e5dbafac5a32_W4o2nJS1/8

    文档资料下载:http://weidongshan.gitee.io/informationdownloadcenter/videos_tutorial/embedded_linux/phase2/index.html


    《Linux设备树详解》

    1. 价格公道,深入浅出,真正讲透设备树
    2. 延续一贯风格:边讲边画、现场写代码
    3. 内容丰富,涉及u-boot/kernel/driver对设备树的处理
      dts=>dtb=>device_node=>platform_device,一共29节
    4. 学员评价:最详细最便宜最精益求精

    观看地址:https://www.100ask.net/detail/p_5e61a9f374112_5P2wQoy0/8

    文档资料下载:http://weidongshan.gitee.io/informationdownloadcenter/videos_tutorial/embedded_linux/DTS/index.html


    《UBOOT移植_LINUX移植_驱动移植》(免费)

    1. UBOOT 2012.0401 移植
    2. Linux 3.4.2 内核移植
    3. Linux 2.6 驱动 移植到 Linux 3.4.2

    《第3期Linux项目实战》

    1. 文件浏览器_数码相框(完全从零搭建项目框架)
    2. 摄像头和 wifi 网卡(精华)
    3. 电源管理

    观看地址:https://www.100ask.net/detail/p_5e5db76f92a84_EEMo0hhx/8

    文档资料下载:http://weidongshan.gitee.io/informationdownloadcenter/videos_tutorial/embedded_linux/phase3/index.html


    《SPI 模块视频》

    1. SPI 协议,
    2. SPI 裸机,
    3. SPI 总线驱动,
    4. SPI 设备驱动,
    5. SPI OLED 驱动

    观看地址
    https://www.100ask.net/detail/p_5e61b5529a557_zg1QvqIA/8

    文档资料下载http://weidongshan.gitee.io/informationdownloadcenter/videos_tutorial/embedded_linux/SPI/index.html


    《第4期Android系统 :安卓驱动framework深度开发》

    1. java 、c++ 、jni
    2. Bootloader
    3. 内核移植
    4. init进程与文件系统
    5. Android框架(Binder、Service、Activity等)
    6. Android专有驱动(Ashmem,电源管理等)
    7. Andrdoid常用驱动(输入系统,显示系统、音频,camera系统等)
    8. 项目

    观看地址
    https://www.100ask.net/detail/p_5e67739303ee7_RtpjrvZ2/8

    文档资料下载
    http://weidongshan.gitee.io/informationdownloadcenter/videos_tutorial/android/phase4_android/index.html


    《预备基础知识:C 语言》

    视频 :我们暂时没录制 C 语言教程,您可网上搜索免费的 C 视频(推荐郝斌)
    自学书籍: 找一本 C 语言书,如谭浩强的《c 语言程序设计》。
    练习:可以用 Visual Studio,也可以在 Linux 下学习,后者需要掌握一些编译命令
    谨记:实践出真知,学习 C 语言,必须练练练写写写!
    掌握基本语法,就可以在电脑上练习一些 C 语言习题;写过几个 C 程序,就可以进入下一阶段的裸机开发。

    入门阶段的误区提醒 :

    不需要学习过多的数据结构知识,只需要掌握链表操作,
    其他如:队列、哈希链表、二叉树等等暂时都不用学;
    不需要学习任何的函数使用,比如文件操作、多线程编程、网络编程等等
    知识,编写Linux 应用程序时会用到,在操作系统特别是驱动学习时用不到这些。
    后续的"裸机开发",更加实战化让你继续练习 C 语言,
    永往直前吧,以后碰到不懂的C 语言问题,再回过头来学习。

    谨记:C 语言功力是在写代码中精进的。


    韦东山嵌入式Linux课程详细介绍(含目录)

    《单片机核心/RTOS必备_硬件编程大全》(更新中···)

    • 这是一套单片机裸机核心课程
    • 它是单片机进阶学习的必须知识
    • 也是Linux裸机开发的衔接知识
    • 更是为进一步学习RTOS/u-boot/Linux做准备

    同时使用:KEIL/GCC
    同时掌握:cortexM3/cortexM4/cortexA7

    从单片机无缝切入Linux裸机开发 ,学习一套视频 ,掌握3种处理器2套开发工具,揭开你不曾了解的深层技术,为切入RTOS/u-boot/Linux驱动做好准备。

    适用人群
    (1)用keil学习了单片机的hal开发,想深入理解单片机的内部机制。
    (2)想学习uboot、rtos等更复杂的程序,却无从入手的人。
    (3)想真正从单片机第一条指令开始,理解程序的人。

    跟JZ2440新1期的对比
    (1)主要知识点没差别
    (2)使用了3款板子同时开讲,可以同时获得cortex M3/M4/A7三种架构的知识。
    (3)使用keil、gcc同时开讲,可以从keil无缝切入gcc。

    《单片机核心/RTOS必备_硬件编程大全》(基于STM32F103)

    观看地址
    https://www.100ask.net/detail/p_5f85731ee4b06aff1a03d3d3/8

    文档资料下载
    http://weidongshan.gitee.io/informationdownloadcenter/videos_tutorial/embedded_linux/MCU_RTOS_HW/index.html

    视频目录

    【第一章】资料说明与下载
    1-1-为什么讲单片机-讲什么内容
    1-2-资料说明与下载
    【第二章】嵌入式概念及硬件组成
    2-1-处理器的区分MCU-MPU-AP
    2-2-嵌入式系统硬件组成
    【第三章】第一个程序(点亮LED)-基于STM32F103开发板
    3-1-硬件知识LED原理图
    3-2-GPIO引脚操作方法概述
    3-3-STM32F103的GPIO操作方法
    3-4-STM32F103的LED编程
    【第四章】ARM架构
    4-1-地址空间-RISC与CISC
    4-2-ARM内部寄存器
    4-3-ARM汇编
    4-4-ARM汇编模拟器VisUAL
    4-5-内存访问指令
    4-6-数据处理指令
    4-7-跳转指令
    【第五章】第1个程序深度解析-基于STM32F103开发板
    5-1-编程知识-进制
    5-2-编程知识-字节序-位操作
    5-3-编程知识-汇编-反汇编-机器码-基于STM32F103开发板
    5-4-编程知识-C与汇编深入分析-基于STM32F103开发板
    5-5-纯汇编点灯-基于STM32F103开发板
    【第六章】使用按键控制LED-基于STM32F103开发板
    6-1-使用按键控制LED-基于STM32F103开发板
    【第七章】串口UART编程–基于STM32F103开发板
    7-1-硬件知识-UART硬件介绍
    7-2-STM32F103-UART操作
    7-3-STM32F103-UART编程
    【第八章】keil-gcc-Makefile
    8-1-KEIL IDE背后的命令
    8-2-准备工作-安装windows gcc工具 CodeBlocks
    8-3-gcc编译过程详解
    8-4-Makefile的引入及规则
    8-5-Makefile的语法
    8-6-Makefile函数
    8-7-Makefile实例
    8-8-改造裸机程序的Makefile
    【第九章】代码重定位–基于STM32F103开发板
    9-1-段的概念-重定位的引入-基于STM32F103开发板
    9-2 重定位要做的事情
    9-3 散列文件使用与分析
    9-4 清除BSS段(ZI段)
    9-5 代码段重定位
    9-6 重定位的纯C函数实现

    《单片机核心/RTOS必备_硬件编程大全》(基于IMX6ULL)

    观看地址
    https://www.100ask.net/detail/p_5f857338e4b0e95a89c3cdb0/8

    文档资料下载
    http://weidongshan.gitee.io/informationdownloadcenter/videos_tutorial/embedded_linux/MCU_RTOS_HW/index.html

    视频目录

    【第一章】资料说明与下载
    1-1-为什么讲单片机-讲什么内容
    1-2-资料说明与下载
    【第二章】嵌入式概念及硬件组成
    2-1-处理器的区分MCU-MPU-AP
    2-2-嵌入式系统硬件组成
    【第三章】第一个程序(点亮LED)-基于IMX6ULL开发板
    3-1-硬件知识-LED原理图
    3-2-GPIO引脚操作方法概述
    3-3-IMX6ULL的GPIO操作方法
    3-4-IMX6ULL的LED寄存器操作
    3-5-IMX6ULL的LED编程
    【第四章】ARM架构
    4-1-地址空间-RISC与CISC
    4-2-ARM内部寄存器
    4-3-ARM汇编
    4-4-ARM汇编模拟器VisUAL
    4-5-内存访问指令
    4-6-数据处理指令
    4-7-跳转指令
    【第五章】第1个程序深度解析–基于IMX6ULL开发板
    5-1-编程知识-进制
    5-2-编程知识-字节序-位操作
    5-3-编程知识-汇编-反汇编-机器码-基于IMX6ULL开发板
    5-4-编程知识-C与汇编深入分析-基于IMX6ULL开发板
    5-5-纯汇编点灯-基于IMX6ULL开发板
    【第六章】使用按键控制LED-基于IMX6ULL开发板
    6-1-使用按键控制LED-基于IMX6ULL开发板
    【第七章】串口UART编程-基于基于IMX6ULL开发板
    7-1-硬件知识-UART硬件介绍
    7-2-IMX6ULL-UART操作
    7-3-IMX6ULL-UART编程
    【第八章】keil-gcc-Makefile
    8-1-KEIL IDE背后的命令
    8-2-准备工作-安装windows gcc工具 CodeBlocks
    8-3-gcc编译过程详解
    8-4-Makefile的引入及规则
    8-5-Makefile的语法
    8-6-Makefile函数
    8-7-Makefile实例
    8-8-改造裸机程序的Makefile
    【第九章】代码重定位-基于IMX6ULL开发板
    9-1-段的概念-重定位的引入-基于IMX6ULL开发板
    9-2 重定位要做的事情
    9-3 链接脚本使用与分析
    9-4 数据段重定位-基于IMX6ULL
    9-5 清除BSS段
    9-6 代码段重定位-基于IMX6ULL
    9-7 重定位的纯C函数实现

    《单片机核心/RTOS必备_硬件编程大全》(基于STM32MP157)

    观看地址
    https://www.100ask.net/detail/p_5f857352e4b0e95a89c3cdb8/8

    文档资料下载
    http://weidongshan.gitee.io/informationdownloadcenter/videos_tutorial/embedded_linux/MCU_RTOS_HW/index.html

    视频目录

    【第一章】资料说明与下载
    1-1-为什么讲单片机-讲什么内容
    1-2-资料说明与下载
    【第二章】嵌入式概念及硬件组成
    2-1-处理器的区分MCU-MPU-AP
    2-2-嵌入式系统硬件组成
    【第三章】第一个程序(点亮LED)-基于STM32MP157开发板
    3-1-硬件知识LED原理图
    3-2-GPIO引脚操作方法概述
    3-3-STM32MP157的GPIO操作方法
    3-4-STM32MP157的LED编程
    【第四章】ARM架构
    4-1-地址空间-RISC与CISC
    4-2-ARM内部寄存器
    4-3-ARM汇编
    4-4-ARM汇编模拟器VisUAL
    4-5-内存访问指令
    4-6-数据处理指令
    4-7-跳转指令
    【第五章】第1个程序深度解析-基于STM32MP157开发板
    5-1-编程知识-进制
    5-2-编程知识-字节序-位操作
    5-3-编程知识-汇编-反汇编-机器码-基于STM32MP157开发板
    5-4-编程知识-C与汇编深入分析-基于STM32MP157开发板
    5-5-纯汇编点灯-基于STM32MP157开发板
    【第六章】使用按键控制LED-基于STM32MP157开发板
    6-1-使用按键控制LED-基于STM32MP157开发板
    【第七章】串口UART编程-基于STM32MP157开发板
    7-1-硬件知识-UART硬件介绍
    7-2-STM32MP157-UART操作
    7-3-STM32MP157-UART编程
    【第八章】keil-gcc-Makefile
    8-1-KEIL IDE背后的命令
    8-2-准备工作-安装windows gcc工具 CodeBlocks
    8-3-gcc编译过程详解
    8-4-Makefile的引入及规则
    8-5-Makefile的语法
    8-6-Makefile函数
    8-7-Makefile实例
    8-8-改造裸机程序的Makefile
    【第九章】代码重定位-基于STM32MP157开发板
    9-1-段的概念-重定位的引入-基于STM32MP157开发板
    9-2 重定位要做的事情
    9-3-链接脚本使用与分析
    9-4-数据段重定位-基于STM32MP157
    9-5 清除BSS段
    9-6 代码段重定位-基于STM32MP157
    9-7 重定位的纯C函数实现


    《嵌入式Linux应用开发基础知识》

    本系列课程通用于:

    1. 100ASK_IMX6ULL_PRO
    2. 100ASK_IMX6ULL_MINI
    3. 100ASK_STM32F103
    4. 100ASK_STM32MP157
    5. 100ASK_AM335X

    观看地址
    https://www.100ask.net/detail/p_5f338ae3e4b075dc42ad44a1/8

    文档资料下载
    http://weidongshan.gitee.io/informationdownloadcenter/videos_tutorial/embedded_linux/full_range_phase1/index.html#

    视频目录
    4-1 HelloWorld背后没那么简单
    4-2 GCC编译器的使用
    4-3 Makefile的使用
    4-3-1 Makefile规则与示例
    4-3-2 通用Makefile的使用
    4-3-3 通用Makefile的解析
    4-4 文件I/O
    4-5 Framebuffer应用编程
    4-6 文字显示及图象显示
    4-6-1 字符的编码方式
    4-6-2 ASCII字符的点阵显示
    4-6-3 中文字符的点阵显示
    4-6-4 交叉编译程序的万能命令_以freetype为例
    4-6-5 使用freetype显示单个文字
    4-6-6 使用freetype显示一行文字
    4-7 输入系统应用编程
    4-7-1 输入系统框架及调试
    4-7-2 现场编程读取获取输入设备信息
    4-7-3 查询_休眠唤醒_方式读取输入数据
    4-7-4 POLL_SELECT_方式读取输入数据
    4-7-5 异步通知方式读取输入数据
    4-7-6 电阻屏和电容屏
    4-7-7 tslib框架分析
    4-7-8 tslib交叉编译与测试
    4-7-9 编写基于tslib的测试程序
    4-8 网络通信
    4-8-1 网络编程概念
    4-8-2 TCP编程示例
    4-8-3 UDP编程示例
    4-9 多线程编程


    《嵌入式Linux驱动开发基础知识》

    • 使用"LED/按键/中断",
    • 引入"查询/休眠-唤醒/POLL/异步通知"等基础知识,
    • pinctrl/gpio/设备树使用,
    • 硬件中断/软件中断/中断上下文/中断的线程化处理

    这些是必备的知识,即使你只做APP开发,这些知识也应该掌握。

    本系列课程通用于:

    1. 100ASK_IMX6ULL_PRO
    2. 100ASK_IMX6ULL_MINI
    3. 100ASK_STM32F103
    4. 100ASK_STM32MP157
    5. 100ASK_AM335X

    视频观看地址
    https://www.100ask.net/detail/p_5f1aa2dde4b0df48afbd775f/8

    文档资料下载
    http://weidongshan.gitee.io/informationdownloadcenter/videos_tutorial/embedded_linux/full_range_phase1/index.html#

    视频目录

    5-1 嵌入式Linux驱动开发基础知识的引导与说明
    5-2 Hello驱动(不涉及硬件操作)
    5-3 硬件知识:LED原理图
    5-4 普适的GPIO引脚操作方法
    5-5 具体单板的GPIO操作方法
    5-5-1 AM335x的GPIO操作方法
    5-5-2 RK3288和RK3399的GPIO操作方法
    5-5-3 IMX6ULL的GPIO操作方法
    5-6 LED驱动程序框架
    5-7 具体单板的LED驱动程序
    5-7-1 AM335X的LED驱动程序
    5-7-2 RK3288和RK3399的LED驱动程序
    5-7-3 IMX6ULL的LED驱动程序
    5-8 驱动设计的思想:面向对象/分层/分离
    5-9 驱动进化之路:总线设备驱动模型
    5-10 LED模板驱动程序的改造:总线设备驱动模型
    5-11 驱动进化之路:设备树的引入及简明教程
    5-12 LED模板驱动程序的改造:设备树
    5-13 APP怎么读取按键值
    5-14 查询方式的按键驱动程序(编写框架)
    5-15 具体单板的按键驱动程序(查询方式)
    5-15-1 AM335X按键驱动程序(查询方式)
    5-15-2 RK3288按键驱动程序(查询方式)
    5-15-3 RK3399按键驱动程序(查询方式)
    5-15-4 百问网IMX6ULL-QEMU的按键驱动程序(查询方式)
    5-16 GPIO和Pinctrl子系统的使用
    5-16-1 Pinctrl子系统重要概念
    5-16-2 GPIO子系统重要概念
    5-16-3 基于GPIO子系统的LED驱动程序
    5-17 异常与中断的概念及处理流程
    5-18 Linux系统对中断的处理
    5-18-1 进程线程中断的核心_栈
    5-18-2 Linux系统对中断处理的演进
    5-18-3 Linux中断系统中的重要数据结构
    5-18-4 在设备树中指定中断_在代码中获得中
    5-18-5 编写使用中断的按键驱动程序
    5-18-6 IMX6ULL设备树修改及上机实验
    5-19 驱动程序基石
    5-19-1 休眠与唤醒
    5-19-2 POLL机制
    5-19-3 异步通知
    5-19-4 阻塞与非阻塞
    5-19-5 定时器
    5-19-6 中断下半部tasklet
    5-19-7 工作队列
    5-19-8 中断的线程化处理
    5-19-9 mmap基础知识
    5-19-10 mmap编


    《实战项目-电子产品量产工具》

    这个项目里,

    我们教给你的是“基础能力”:

    1. 良好的编程规范
    2. 面向对象的编程思想
    3. 练习对事物的抽象能力
    4. 练习对整个系统的把控

    这些学到手后,
    这个项目可以无限扩展(例如:智能点菜终端、自助收银机、银行ATM机、排队管理系统、贴片机)

    观看地址
    https://www.100ask.net/detail/p_5f181e8fe4b0df48afbce201/8

    文档资料下载
    http://weidongshan.gitee.io/informationdownloadcenter/videos_tutorial/embedded_linux/full_range_phase1/index.html#

    视频目录

    1.程序框架
    1.1 程序框架
    1.2 程序预览及资料说明
    2.显示系统
    2.1 数据结构抽象
    2.2 Framebuffer编程
    2.3 显示管理
    2.4 单元测试
    3.输入系统
    3.1 数据结构抽象
    3.2 触摸屏编程
    3.3 触摸屏单元测试
    3.4 网络输入编程
    3.5 网络输入单元测试
    3.6 输入管理_先写框架
    3.7 输入管理_环形缓冲区
    3.8 输入管理单元测试
    4.文字系统
    4.1 数据结构抽象
    4.2 实现Freetype代码
    4.3 文字管理
    4.4 单元测试_编程
    4.5 单元测试_上机
    5.UI系统
    5.1 按钮数据结构抽象
    5.2 编写按钮
    5.3 按钮单元测试
    6.页面系统
    6.1 数据结构抽象
    6.2 编写页面管理器
    6.3 单元测试
    7.业务系统
    7.1 流程及代码框架
    7.2 处理配置文件
    7.3 生成界面
    7.4 处理输入事件
    7.5 单元测试
    8.改进
    8.1 接口函数名优化
    8.2 按钮文字居中
    8.3 支持进度显示

    《ARM裸机1期加强版》

    视频观看地址
    https://www.100ask.net/detail/p_5e5dbba57d468_PAnaJsaJ/8

    文档资料下载http://weidongshan.gitee.io/informationdownloadcenter/videos_tutorial/embedded_linux/phase1/index.html

    适宜人群

    1. 有计算机,C语言和数电基础的大学生
    2. 想转嵌入式Linux的单片机工程师
    3. 嵌入式Linux底层工程师
    4. 嵌入式Linux软件工程师

    学习周期:2个月
    课程章节:148节
    录制状态:已录完
    播放器: HUPlayer

    视频目录

    第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的擦除与烧写
    第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红外线接收器的编程-解析数据


    《新1期与2期间的衔接课程》

    适宜人群:嵌入式Linux系统工程师
    课程章节:29节
    学习周期:1个月

    在线观看
    https://www.100ask.net/detail/p_5e5c625e5937a_7hU6qJy9/6

    视频文档源码下载地址
    http://weidongshan.gitee.io/informationdownloadcenter/videos_tutorial/embedded_linux/linkup/index.html#
    录制状态 :已录完
    播放器:任意播放器

    视频目录

    第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、字符设备驱动


    《第2期Linux驱动大全》

    适宜人群

    1. 有数电、计算机、C语言基础的大学生
    2. 嵌入式Linux系统工程师
    3. 嵌入式Linux驱动工程师

    课程章节:81节
    学习周期:3个月
    录制状态:已录完
    播放器: HUPlayer

    在线观看
    https://www.100ask.net/detail/p_5e5dbafac5a32_W4o2nJS1/8

    视频文档源码下载地址
    http://weidongshan.gitee.io/informationdownloadcenter/videos_tutorial/embedded_linux/phase2/index.html

    学习目标1
    掌握三大类驱动程序的框架:字符设备、块设备、网卡驱动
    掌握驱动程序中各种操作:休眠-唤醒, 同步互斥, 异步通知, 定时器,上下半部等
    能自己写出 2 期视频里讲到的各种驱动,它们已经涉及工作中的绝大部分驱动

    学习目标2
    掌握裸板调试方法:点灯、打印、
    用 JTAG 工具进行源码级别的调试,查看反汇编 。
    掌握驱动调试方法:打印,自制打印,分析oops 信息,栈回溯,
    理解内核原理然后修改内核,
    自制调试工具掌握系统级别的应用调试方法:
    使用工具,修改内核自制工具

    视频目录
    第12课第8节 字符设备驱动程序之定时器防抖动
    第13课第1节 输入子系统的概念介绍
    第13课第2节 输入子系统之编写驱动程序
    第14课 驱动程序分层分离概念_总线驱动设备模型
    第15课第1节 LCD驱动程序之层次分析
    第15课第2节 LCD驱动程序之硬件操作
    第15课第3节 LCD驱动程序之编写代码之1初步编写
    第15课第3节 LCD驱动程序之编写代码之2硬件设置
    第15课第3节 LCD驱动程序之编写代码之3显存和调色板设置
    第15课第4节 LCD驱动程序之编译测试
    第16课第1节 触摸屏驱动程序之概念介绍
    第16课第2节 触摸屏驱动程序之编写驱动
    第16课第3节 触摸屏驱动程序之使用TSLIB测试
    第17课第1节 USB驱动程序之概念介绍
    第17课第2节 USB驱动程序之USB总线驱动程序
    第17课第3节 USB驱动程序之USB设备驱动程序之简单编写
    第17课第3节 USB驱动程序之USB设备驱动程序之鼠标用作键盘
    第18课第1节 块设备驱动程序的引入
    第18课第2节 块设备驱动程序的框架
    第18课第3节 块设备驱动程序的编写驱动之用内存模拟磁盘
    第19课第1节 NAND FLASH原理及硬件操作
    第19课第2节 NAND FLASH驱动程序框架
    第19课第3节 NAND FLASH驱动程序之编写代码之1简单编写
    第19课第3节 NAND FLASH驱动程序之编写代码之2完善识别过程
    第19课第3节 NAND FLASH驱动程序之编写代码之3添加MTD设备及测试
    第20课第1节 NOR FLASH原理及硬件操作
    第20课第2节 NOR FLASH驱动程序之框架
    第20课第3节 NOR FLASH驱动程序之编写代码
    第21课第1节 网卡驱动程序之框架
    第21课第2节 网卡驱动程序之编写虚拟网卡
    第22课第1节 移植DM9000C驱动程序之确定相异性
    第22课第2节 移植DM9000C驱动程序之设置时序
    第22课第3节 移植DM9000C驱动程序之测试及内存控制器简介
    第23课第1节 I2C设备裸板程序之I2C总线介绍
    第23课第2节 I2C设备裸板程序之编写代码
    第23课第3节 I2C设备裸板程序之测试
    第24课第1节 I2C驱动程序之框架
    第24课第2节 I2C驱动程序之编写代码
    第25课第1节 字符设备驱动程序概念纠正之另一种写法
    第25课第2节 字符设备驱动程序概念纠正之RTC驱动分析
    第26课第1节 声音采集播放及IIS接口介绍
    第26课第2节 UDA1341芯片之L3接口介绍
    第26课第3节 UDA1341声卡驱动程序分析及测试
    第26课第4节 WM9876声卡驱动程序编写及测试
    第26课第5节 使用madplay播放mp3文件
    第27课第1节 DMA的引入
    第27课第2节 DMA驱动程序之编写
    第27课第3节 DMA驱动程序之测试
    第27课第4节 DMA之内核函数简单介绍
    第28课第1节 hotplug_uevent机制
    第28课第2节 hotplug_uevent机制_修改mdev配置支持U盘自动挂载
    独家裸板调试技巧(借助JTAG工具 , 串口打印,点灯等等)
    第29课第1节 裸板调试之点灯法
    第29课第2节 裸板调试之串口打印及栈初步分析
    第29课第3.1节 裸板调试之JTAG原理
    第29课第3.2节 裸板调试之JTAG调试体验
    第29课第3.3节 裸板调试之JTAG调试命令行调试
    第29课第3.4节 裸板调试之JTAG调试源码级调试
    独家驱动调试技巧(printk打印 , 观察proc文件,段错误分析,自制工具等)
    第30课第1.1节 驱动调试之printk的原理
    第30课第1.2节 驱动调试之printk的使用
    第30课第1.3节 驱动调试之打印到proc虚拟文件
    第30课第2.1节 驱动调试之段错误分析_根据pc值确定出错的代码位置
    第30课第2.2节 驱动调试之段错误分析_根据栈信息确定函数调用过程
    第30课第3节 驱动调试之自制工具_寄存器编辑器
    第30课第4节 驱动调试之修改系统时钟中断定位系统僵死问题
    独家应用调试技巧(使用strace命令、gdb 、gdbserver,自制系统调用等)
    第31课第1节 应用调试之使用strace命令跟踪系统调用
    第31课第2节 应用调试之使用gdb和gdbserver
    第31课第3节 配置修改内核打印用户态段错误信息
    第31课第4.1节 应用调试之自制系统调用
    第31课第4.2节 应用调试之使用自制的系统调用
    第31课第5.1节 应用调试之输入模拟器之设计思路
    第31课第5.2节 应用调试之输入模拟器之编写保存功能
    第31课第5.3节 应用调试之输入模拟器之编写测试模拟功能
    第32课第1.1节3.4.2内核下的I2C驱动之框架介绍
    第32课第1.2节3.4.2内核下的I2C驱动之框架编写代码
    第32课第2节3.4.2内核下的I2C驱动之编写设备驱动
    第32课第3节3.4.2内核下的I2C驱动之用户态直接访问
    第32课第4节3.4.2内核下的I2C驱动之编写总线驱动程序
    第33课第1节_多点触摸_电容屏驱动程序_理论框架
    第33课第1节_多点触摸_电容屏驱动程序_理论框架_堪误
    第33课第2节_多点触摸_电容屏驱动程序_编写框架
    第33课第3节_多点触摸_电容屏驱动程序_编写框架_实践_tiny4412


    《linux设备树详解》

    适宜人群:
    1.有Linux驱动开发基础的, 挑感兴趣章节学习
    2.没有Linux驱动开发基础的 , 按顺序观看

    课程特点:

    • 先讲解非设备树和使用了设备树代码之间的区别,更深刻的让你理解设备树的作用
    • 边讲边画、现场写代码,先理论后实践,对于难点(比如内核对设备树的处理)重点讲解
    • wiki教程、随堂笔记和代码应有尽有,学习的同时辅助理解,综合填补知识空白点,从而找到自己的学习路径。

    课程章节 :29小节
    学习周期 :1个月
    是否更新完毕 :是
    播放器 :HUPlayer

    在线观看
    https://www.100ask.net/detail/p_5e61a9f374112_5P2wQoy0/8

    视频&文档源码下载
    http://weidongshan.gitee.io/informationdownloadcenter/videos_tutorial/embedded_linux/DTS/index.html

    视频目录

    第一课_设备树的引入与体验(免费)
    第01节_字符设备驱动的三种写法(免费)
    第02节_字符设备驱动的传统写法(免费)
    第03节_字符设备驱动的编译测试(免费)
    第04节_总线设备驱动模型
    第05节_使用设备树时对应的驱动编程
    第06节_只想使用不想深入研究怎么办?(免费)
    第二课_设备树的规范
    第01节_DTS规范
    第02节_DTB规范
    第三课_内核对设备树的处理
    第01节_从源头分析_内核head.S对dtb的简单处理
    第02节_对设备树中平台信息的处理(选择machine_desc)
    第03节_对设备树中运行时配置信息的处理
    第04节_dtb转换为device_node(unflatten)
    第05节_device_node转换为platform_device
    第06节_platform_device跟platform_driver的匹配
    第07节_内核中设备树的操作函数
    第08节_在根文件系统中查看设备树
    第四课_u-boot对设备树的支持
    第01节_传递dtb给内核
    第02节_dtb的修改原理
    第03节_dtb的修改命令fdt移植
    第五课_中断系统中的设备树
    第01节_中断概念的引入与处理流程
    第02节_Linux对中断处理的框架及代码流程简述
    第03节_中断号的演变与irq_domain
    第04节_示例_在S3C2440上使用设备树描述中断体验
    第05节_示例_使用设备树描述按键中断
    第06节_内核对设备树中断信息的处理过程
    第六课_实践操作
    第01节_使用设备树给DM9000网卡_触摸屏指定中断
    第02节_在设备树中时钟的简单使用
    第03节_在设备树中pinctrl的简单使用
    第04节_使用设备树给LCD指定各种参数


    《UBOOT移植_LINUX移植_驱动移植(免费)》

    适宜人群

    1. 检验是否学会第1、2期视频
    2. 嵌入式Linux系统工程师
    3. 嵌入式Linux驱动工程师

    学习周期 :2个月
    课程章节数:19节
    录制状态: 已录完
    播放器:任意播放器

    在线观看
    https://www.100ask.net/detail/p_5e5c620729630_zPOod3QP/8

    视频源码文档下载地址
    http://weidongshan.gitee.io/informationdownloadcenter/videos_tutorial/embedded_linux/graduating_class/index.html

    学习目标

    1. 能自己写出一个 bootloader
    2. 能移植一个全新的 u-boot
    3. 能自己移植一个全新的内核,把所有的驱动移植到新内核里

    视频目录
    毕业班第2课第1节_移植最新u-boot之初试
    毕业班第2课第2.1节_移植最新u-boot之分析启动过程之概述
    毕业班第2课第2.2节_移植最新u-boot之分析启动过程之内存分布
    毕业班第2课第2.3节_移植最新u-boot之分析启动过程之重定位
    毕业班第2课第3.1节_移植最新u-boot之修改代码之建新板_时钟_SDRAM_UART
    毕业班第2课第3.2节_移植最新u-boot之修改代码支持NAND启动
    毕业班第2课第3.3节_移植最新u-boot之修改代码支持NorFlash
    毕业班第2课第3.4节_移植最新u-boot之修改代码支持NandFlash
    毕业班第2课第3.5节_移植最新u-boot之修改代码支持DM9000网卡
    毕业班第2课第4.1节_移植最新u-boot之裁剪和修改默认参数
    毕业班第2课第4.2节_移植最新u-boot支持烧写yaffs映象及制作补丁
    毕业班第3课第1节_移植3.4.2内核之框架介绍及简单修改
    毕业班第3课第2节_移植3.4.2内核之修改分区及制作根文件系统
    毕业班第3课第3节_移植3.4.2内核之支持yaffs文件系统
    毕业班第3课第4节_移植3.4.2内核之裁剪及ECC简介及制作补丁
    毕业班第4课第1节_移植驱动到3.4.2内核之DM9000C
    毕业班第4课第2节_移植驱动到3.4.2内核之LED和按键
    毕业班第4课第3节_移植驱动到3.4.2内核之LCD及输入系统
    毕业班第4课第4节_移植驱动到3.4.2内核之块设备和虚拟网卡


    《第3期Linux项目实战》

    适宜人群

    1. 有数电、计算机、C语言基础的大学生
    2. 嵌入式Linux系统工程师
    3. 嵌入式Linux应用工程师
    4. 嵌入式Linux驱动工程师

    课程章节数:113节
    学习周期:3个月
    录制状态:已录完
    播放器 :HUPlayer

    在线观看:
    https://www.100ask.net/detail/p_5e5db76f92a84_EEMo0hhx/8

    视频文档源码下载地址:
    http://weidongshan.gitee.io/informationdownloadcenter/videos_tutorial/embedded_linux/phase3/index.html

    目标1:搭建一个好的应用程序框架
    目标2:活用各种开源软件
    目标3:如何打通整个项目

    项目一:数码相框

    涉及知识点

    1. 框架
    2. 字体显示
    3. 电子书
    4. 支持多输入
    5. 远程打印
    6. 图片显示
    7. GUI编写
    8. 整体效果

    项目一视频目录

    第1课第1节_数码相框之系统框架
    第1课第2.1节_数码相框_字符的编码方式
    第1课第2.2节_数码相框_字符的点阵显示
    第1课第2.3.1节_数码相框_freetype理论介绍
    第1课第2.3.2节_数码相框_在PC上测试freetype
    第1课第2.3.3节_数码相框_在LCD上显示一个矢量字体
    第1课第2.3.4节_数码相框_在LCD上显示多行文字
    第1课第3.1节_数码相框_额外项目_电子书之效果及框架
    第1课第3.2节_数码相框_额外项目_电子书之代码阅读及编写
    第1课第3.3节_数码相框_额外项目_电子书之指针的操作
    第1课第3.4节_数码相框_额外项目_电子书之链表的操作
    第1课第3.5节_数码相框_额外项目_电子书之在PC上显示
    第1课第4节_数码相框_编写通用的Makefile
    第1课第5.1节_数码相框_使用多种方法支持多输入_框架及轮询方式
    第1课第5.2节_数码相框_使用多种方法支持多输入_select方式
    第1课第5.3节_数码相框_使用多种方法支持多输入_多线程
    第1课第6.1节_一小时学会网络编程_两个简单例子_tcp_udp
    第1课第6.2节_修改电子书源码支持远程打印1
    第1课第6.2节_修改电子书源码支持远程打印2
    第1课第7节_libjpeg的使用
    第1课第8.1节_数码相框功能及程序框架
    第1课第8.2节_数码相框程序编写_先写框架
    第1课第8.3.1节_数码相框程序编写_图标显示之bmp数据提取
    第1课第8.3.2节_数码相框程序编写_图标显示之缩放
    第1课第8.3.3节_数码相框程序编写_图标显示之测试
    第1课第8.4.1节_数码相框程序编写_MainPage显存管理
    第1课第8.4.2节_数码相框程序编写_MainPage页面规划
    第1课第8.4.3节_数码相框程序GUI编写_MainPage输入功能
    第1课第8.4.4节_数码相框GUI程序编写_MainPage测试
    第1课第8.5.1节_数码相框效果演示及编译使用方法
    第1课第8.5.2节_数码相框完整代码的讲解
    第1课第8.5.3节_数码相框改进性能_支持中文
    第1课第8.5.3节_数码相框改进性能2
    第1课第8.5.3节_数码相框改进性能10
    第1课第8.5.4节_数码相框课后作业及思路
    第1课第8.5.4节_数码相框课后作业及思路2

    项目二:视频监控

    涉及知识点

    1. V4L2框架
    2. 虚拟驱动vivi彻底分析
    3. USB摄像头驱动框架
    4. 从零写USB摄像头驱动
    5. 在LCD上显示摄像头图像
    6. 从零写CMOS摄像头驱动
    7. 便携式无线监控
    8. WIFI网卡
    9. 3G上网卡
    10. ALSA声卡深入讲解
    11. 讲解mjpg-streamer

    项目二视频目录

    第2课第1.1.1节_摄像头驱动_V4L2框架分析
    第2课第1.1.2节_摄像头驱动_虚拟驱动vivi的测试
    第2课第1.1.3节_摄像头驱动_摄像头驱动程序彻底分析
    第2课第1.1.4节_摄像头驱动_从零写一个虚拟驱动
    第2课第1.1.5节_摄像头驱动_USB摄像头驱动框架分析
    第2课第1.1.6节_摄像头驱动_从零写USB摄像头驱动之分析描述符
    第2课第1.1.7节_摄像头驱动_从零写USB摄像头驱动之实现数据传输1_框架
    第2课第1.1.7节_摄像头驱动_从零写USB摄像头驱动之实现数据传输2_简单函数
    第2课第1.1.7节_摄像头驱动_从零写USB摄像头驱动之实现数据传输3_设置参数
    第2课第1.1.7节_摄像头驱动_从零写USB摄像头驱动之实现数据传输4_URB
    第2课第1.1.7节_摄像头驱动_从零写USB摄像头驱动之实现数据传输5_调试
    第2课第1.1.8节_摄像头驱动_从零写USB摄像头驱动之设置属性
    第2课第1.1.9节_自制USB摄像头硬件的驱动编写_修改UVC
    第2课第1.1.10节_自制USB摄像头硬件的驱动编写_修改myuvc
    第2课第1.1_11节_在LCD上显示摄像头图像1_效果_框架_准备工作
    第2课第1.1_11节_在LCD上显示摄像头图像2_实现摄像头模块
    第2课第1.1_11节_在LCD上显示摄像头图像3_实现转换模块
    第2课第1.1_11节_在LCD上显示摄像头图像4_整合代码
    第2课第1.1_11节_在LCD上显示摄像头图像5_调试测试
    第2课第1.1_11节_在LCD上显示摄像头图像6_在PC上显示
    第2课第1.1_12节_CMOS摄像头之硬件原理
    第2课第1.1_13节_从零写CMOS摄像头驱动1_画框架
    第2课第1.1_13节_从零写CMOS摄像头驱动2_编写驱动程序框架
    第2课第1.1_13节_从零写CMOS摄像头驱动3_初始化摄像头模块
    第2课第1.1_13节_从零写CMOS摄像头驱动4.1_逐个讲解并设置摄像头控制器的寄存器
    第2课第1.1_13节_从零写CMOS摄像头驱动4.2_逐个讲解并设置摄像头控制器的寄存器
    第2课第1.1_13节_从零写CMOS摄像头驱动4.3_逐个讲解并设置摄像头控制器的寄存器
    第2课第1.1_13节_从零写CMOS摄像头驱动5_编译调试
    第2课第1.1_14_额外项目_便携式无线监控_效果
    第2课第1.1_14_额外项目_便携式无线监控_实现过程1
    第2课第1.1_14_额外项目_便携式无线监控_实现过程2
    第2课第1.1_15节_使用WIFI网卡1_准备工作及配置内核
    第2课第1.1_15节_使用WIFI网卡2_概念及工具iw(STA模式)
    第2课第1.1_15节_使用WIFI网卡3_工具wpa_supplicant(STA模式)
    第2课第1.1_15节_使用WIFI网卡4_工具dhcp及全自动使用wifi
    第2课第1.1_15节_使用WIFI网卡5_AP模式
    第2课第1.1_15节_使用WIFI网卡6_仿手机写wifi操作程序
    第2课第1.1_16节_3G上网卡1_工具及使用
    第2课第1.1_16节_3G上网卡2_编程自动切换模式
    第2课第1.1_16节_3G上网卡3_编程自动确认拨号端口
    第2课第1.1_17节_ALSA声卡01_裸板之原理和框架
    第2课第1.1_17节_ALSA声卡02_裸板之编写程序
    第2课第1.1_17节_ALSA声卡03_裸板之编译和测试
    第2课第1.1_17节_ALSA声卡04_ALSA驱动框架
    第2课第1.1_17节_ALSA声卡05_ASoC驱动框架
    第2课第1.1_17节_ALSA声卡06_体验声卡
    第2课第1.1_17节_ALSA声卡07_分析调用过程
    第2课第1.1_17节_ALSA声卡08_从零编写之框架
    第2课第1.1_17节_ALSA声卡09_从零编写之参数设置
    第2课第1.1_17节_ALSA声卡10_从零编写之数据传输
    第2课第1.1_17节_ALSA声卡11_从零编写之调试
    第2课第1.1_17节_ALSA声卡12_从零编写之添加音量控制
    第2课第1.1_17节_ALSA声卡13_从零编写之WM8976
    第2课第1.1_17节_ALSA声卡14_移植原厂WM8976驱动
    第2课第1.1_17节_ALSA声卡15_修改内核声卡BUG
    第2课第1.1_17节_ALSA声卡16_编写ALSA声卡应用程序
    第2课第1.1_18节_额外项目_讲解mjpg-streamer_1_移植_效果演示
    第2课第1.1_18节_额外项目_讲解mjpg-streamer_2_框架
    第2课第1.1_18节_额外项目_讲解mjpg-streamer_3_源码分析(上)_主进程
    第2课第1.1_18节_额外项目_讲解mjpg-streamer_4_源码分析(中)_输入通道_视频采集过程
    第2课第1.1_18节_额外项目_讲解mjpg-streamer_5_源码分析(下)_输出通道_视频传输过程
    第2课第1.1_18节_额外项目_讲解mjpg-streamer_6_自己写客服端(上)
    第2课第1.1_18节_额外项目_讲解mjpg-streamer_7_自己写客服端(下)
    第2课第1.1_18节_额外项目_讲解mjpg-streamer_8_自己写客服端_编译调试

    项目三:电源管理

    涉及知识点

    1. 在Uboot上实现电源管理
    2. Linux系统休眠模型
    3. runtime_PM模型和驱动
    4. regulator系统概念和测试
    5. 数码相框电源管理

    项目三视频目录

    第01课第1节_电源管理概述
    第02课第1节_在uboot上实现电源管理_编写休眠功能
    第02课第2节_在uboot上实现电源管理_编写唤醒功能
    第02课第3节_在uboot上实现电源管理_调试
    第03课第1节_系统睡眠模型_Linux的suspend流程
    第03课第2节_系统睡眠模型_修改内核或驱动以使用suspend功能
    第03课第3节_系统睡眠模型_给驱动程序添加电源管理功能
    第04课第1节_runtime_PM框架
    第04课第2节_runtime_PM修改驱动程序和使用
    第05课第1节_regulator系统的概念并编写代码
    第05课第2节_regulator系统之编译测试
    第06课第1节_APP_修改数码相框以支持自动关闭LCD
    第06课第2节_APP_编写支持开关机(suspend)的应用程序
    第07课_从系统角度考虑电源管理 , 我们要学习更多


    《SPI模块视频》

    适宜人群

    1. 有数电、计算机、C语言基础的大学生
    2. 嵌入式Linux驱动工程师

    课程章节数:17节
    学习周期:半个月
    录制状态:已录完
    播放器:HUPlayer

    在线观看
    https://www.100ask.net/detail/p_5e61b5529a557_zg1QvqIA/8

    视频文档源码下载地址
    http://weidongshan.gitee.io/informationdownloadcenter/modules/CommunicationModule/SPI/index.html

    视频目录

    第1课第1节_SPI协议和OLED裸板程序
    第1课第2节_裸板_SPI_FLASH
    第1课第3节_裸板_使用SPI控制器
    第1课第4节_裸板_移植到MINI2440_TQ2440
    第1课第5节_谌误_SPI协议的模式
    第2课第1节_SPI驱动框架
    第3课第1节_SPI_OLED驱动_准备环境及编写单板信息
    第3课第2节_SPI_OLED驱动_编写spi_driver
    第3课第3节_SPI_OLED驱动_修改spi_maste
    第3课第4节_SPI_OLED驱动_编译安装
    第3课第5节_SPI_OLED驱动_测试
    第4课第1节_SPI_FLASH驱动_编写
    第4课第2节_SPI_FLASH驱动_调试
    第5课第1节_SPI_MASTER驱动_编写框架
    第5课第2节_SPI_MASTER驱动_编写setup函数
    第5课第3节_SPI_MASTER驱动_编写transfer函数
    第5课第4节_SPI_MASTER驱动_测试


    《Android 系统视频》

    适宜人群

    1. Android系统工程师
    2. Android驱动工程师
    3. Android中间层工程师

    源码 : github下载
    录制状态 :持续更新
    播放器: HUPlayer

    在线观看
    https://www.100ask.net/detail/p_5e67739303ee7_RtpjrvZ2/8

    视频文档下载地址:
    http://weidongshan.gitee.io/informationdownloadcenter/videos_tutorial/android/phase4_android/index.html

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述
    这里写图片描述
    这里写图片描述

    资料下载&百问网技术交流群,百万嵌入式工程师聚集地:
    https://www.100ask.net/page/2248041

    百问网技术论坛:
    http://bbs.100ask.net/

    百问网嵌入式视频官网:
    https://www.100ask.net/index

    百问网开发板:
    淘宝:https://100ask.taobao.com/
    天猫:https://weidongshan.tmall.com/

    展开全文
  • QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载) 交流群二:QQ群:536785813(单片机-嵌入式) 公 众 号:百问科技 版本 日期 作者 说明 V1 2020 韦东山 技术文档 应用程序和驱动程序之间传递数据时,...

    在线课堂:https://www.100ask.net/index(课程观看)
    论  坛:http://bbs.100ask.net/(学术答疑)
    开 发 板:https://100ask.taobao.com/ (淘宝)
         https://weidongshan.tmall.com/(天猫)
    交流群一:QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载)
    交流群二:QQ群:536785813(单片机-嵌入式)
    公 众 号:百问科技


    版本日期作者说明
    V12020韦东山技术文档

    应用程序和驱动程序之间传递数据时,可以通过read、write函数进行。这涉及在用户态buffer和内核态buffer之间传数据,如下图所示:
    在这里插入图片描述
    应用程序不能直接读写驱动程序中的buffer,需要在用户态buffer和内核态buffer之间进行一次数据拷贝。这种方式在数据量比较小时没什么问题;但是数据量比较大时效率就太低了。比如更新LCD显示时,如果每次都让APP传递一帧数据给内核,假设LCD采用102460032bpp的格式,一帧数据就有102460032/8=2.3MB左右,这无法忍受。

    改进的方法就是让程序可以直接读写驱动程序中的buffer,这可以通过mmap实现(memory map),把内核的buffer映射到用户态,让APP在用户态直接读写。

    1.内存映射现象与数据结构
    假设有这样的程序,名为test.c:

    #include <stdio.h>
    #include <unistd.h>
    
    int a;
    
    int main(int argc, char **argv)
    {
    	printf("enter a's value: \n");
    	scanf("%d", &a);
    	printf("a's address = 0x%x, a's value = %d\n", &a, a);
    	while (1)
    	{
    		sleep(10);
    	}
    	return 0;
    }
    

    在ubuntu上如下编译:

    gcc  -o test  test.c -static
    

    在2个终端中分别执行test程序,在第3个终端执行ps -a,可以看到这2个程序同时存在,如下图:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    观察到这些现象:

    ① 2个程序同时运行,它们的变量a的地址都是一样的:0x6d73c0;

    ② 2个程序同时运行,它们的变量a的值是不一样的,一个是12,另一个是123。

    疑问来了:

    ① 这2个程序同时在内存中运行,它们在内存中的地址肯定不同,比如变量a的地址肯定不同;

    ② 但是打印出来的变量a的地址却是一样的。

    怎么回事?

    这里要引入虚拟地址的概念:CPU发出的地址是虚拟地址,它经过MMU(Memory Manage Unit,内存管理单元)映射到物理地址上,对于不同进程的同一个虚拟地址,MMU会把它们映射到不同的物理地址。如下图:

    在这里插入图片描述

    当前运行的是app1时,MMU会把CPU发出的虚拟地址addr映射为物理地址paddr1,用paddr1去访问内存。

    当前运行的是app2时,MMU会把CPU发出的虚拟地址addr映射为物理地址paddr2,用paddr2去访问内存。

    MMU负责把虚拟地址映射为物理地址,虚拟地址映射到哪个物理地址去?映射关系保存在页表中:

    在这里插入图片描述

    解析如下:

    ① 每个APP在内核中都有一个task_struct结构体,它用来描述一个进程;

    ② 每个APP都要占据内存,在task_struct中用mm_struct来管理进程占用的内存;

    内存在虚拟地址、物理地址,mm_struct中用mmap来描述虚拟地址,用pgd来描述对应的物理地址。

    注意:pgd,Page Global Directory,页目录。

    ③ 每个APP都有一系列的VMA:virtual memory

    比如APP含有代码段、数据段、BSS段、栈等等,还有共享库。这些单元会保存在内存里,它们的地址空间不同,权限不同(代码段是只读的可运行的、数据段可读可写),内核用一系列的vm_area_struct来描述它们。

    vm_area_struct中的vm_start、vm_end是虚拟地址。

    ④ vm_area_struct中虚拟地址如何映射到物理地址去?

    每一个APP的虚拟地址可能相同,物理地址不相同,这些对应关系保存在pgd中。

    2.ARM架构内存映射简介
    ARM架构支持一级页表映射,也就是说MMU根据CPU发来的虚拟地址可以找到第1个页表,从第1个页表里就可以知道这个虚拟地址对应的物理地址。一级页表里地址映射的最小单位是1M。

    ARM架构还支持二级页表映射,也就是说MMU根据CPU发来的虚拟地址先找到第1个页表,从第1个页表里就可以知道第2级页表在哪里;再取出第2级页表,从第2个页表里才能确定这个虚拟地址对应的物理地址。二级页表地址旺射的最小单位有4K、1K,Linux使用4K。

    一级页表项里的内容,决定了它是指向一块物理内存,还是指问二级页表,如下图:

    在这里插入图片描述

    2.1, 一级页表映射过程
    一线页表中每一个表项用来设置1M的空间,对于32位的系统,虚拟地址空间有4G,4G/1M=4096。所以一级页表要映射整个4G空间的话,需要4096个页表项。

    第0个页表项用来表示虚拟地址第0个1M(虚拟地址为0~0x1FFFFF)对应哪一块物理内存,并且有一些权限设置;

    第1个页表项用来表示虚拟地址第1个1M(虚拟地址为0x100000~0x2FFFFF)对应哪一块物理内存,并且有一些权限设置;

    依次类推。

    使用一级页表时,先在内存里设置好各个页表项,然后把页表基地址告诉MMU,就可以加动MMU了。

    以下图为例介绍地址映射过程:

    ① CPU发出虚拟地址vaddr,假设为0x12345678

    ② MMU根据vaddr[31:20]找到一级页表项:

    虚拟地址0x12345678是虚拟地址空间里第0x123个1M,所以找到页表里第0x123项,根据此项内容知道它是一个段页表项。

    段内偏移是0x45678。

    ③ 从这个表项里取出物理基地址:Section Base Address,假设是0x81000000

    ④ 物理基地址加上段内偏移得到:0x81045678

    所以CPU要访问虚拟地址0x12345678时,实际上访问的是0x81045678的物理地址
    在这里插入图片描述

    2.2, 二级页表映射过程

    首先设置好一级页表、二级页表,并且把一级页表的首地址告诉MMU。

    以下图为例介绍地址映射过程:

    ① CPU发出虚拟地址vaddr,假设为0x12345678

    ② MMU根据vaddr[31:20]找到一级页表项:

    虚拟地址0x12345678是虚拟地址空间里第0x123个1M,所以找到页表里第0x123项。根据此项内容知道它是一个二级页表项。

    ③ 从这个表项里取出地址,假设是address,这表示的是二级页表项的物理地址;

    ④ vaddr[19:12]表示的是二级页表项中的索引index即0x45,在二级页表项中找到第0x45项;

    ⑤ 二级页表项中含有页基地址page base addr,假设是0x81889000:

    它跟vaddr[11:0]组合得到物理地址:0x81889000 + 0x678 = 0x81889678。

    所以CPU要访问虚拟地址0x12345678时,实际上访问的是0x81889678的物理地址
    在这里插入图片描述

    3, 怎么给APP新建一块内存映射
    3.1, mmap调用过程

    从上面内存映射的过程可以知道,要给APP端新开劈一块虚拟内存,并且让它指向某块内核buffer,我们要做这些事:

    ① 得到一个vm_area_struct,它表示APP的一块虚拟内存空间;

    很幸运,APP调用mmap系统函数时,内核就帮我们构造了一个vm_area_stuct结构体。里面含有虚拟地址的地址范围、权限。

    ② 确定物理地址:

    你想映射某个内核buffer,你需要得到它的物理地址,这得由你提供。

    ③ 给vm_area_struct和物理地址建立映射关系:

    也很幸运,内核提供有相关函数。

    APP里调用mmap时,导致的内核相关函数调用过程如下:

    在这里插入图片描述

    3.2 cache和buffer
    本小节参考:

    ARM的cache和写缓冲器(write buffer)
    https://blog.csdn.net/gameit/article/details/13169445

    使用mmap时,需要有cache、buffer的知识。下图是CPU和内存之间的关系,有cache、buffer(写缓冲器)。Cache是一块高速内存;写缓冲器相当于一个FIFO,可以把多个写操作集合起来一次写入内存。

    在这里插入图片描述

    程序运行时有“局部性原理”,这又分为时间局部性、空间局部性。

    ① 时间局部性:

    在某个时间点访问了存储器的特定位置,很可能在一小段时间里,会反复地访问这个位置。

    ② 空间局部性:

    访问了存储器的特定位置,很可能在不久的将来访问它附近的位置。

    而CPU的速度非常快,内存的速度相对来说很慢。CPU要读写比较慢的内存时,怎样可以加快速度?根据“局部性原理”,可以引入cache。

    ① 读取内存addr处的数据时:

    先看看cache中有没有addr的数据,如果有就直接从cache里返回数据:这被称为cache命中。

    如果cache中没有addr的数据,则从内存里把数据读入,注意:它不是仅仅读入一个数据,而是读入一行数据(cache line)。

    而CPU很可能会再次用到这个addr的数据,或是会用到它附近的数据,这时就可以快速地从cache中获得数据。

    ② 写数据:

    CPU要写数据时,可以直接写内存,这很慢;也可以先把数据写入cache,这很快。

    但是cache中的数据终究是要写入内存的啊,这有2种写策略:

    a. 写通(write through):

    数据要同时写入cache和内存,所以cache和内存中的数据保持一致,但是它的效率很低。能改进吗?可以!使用“写缓冲器”:cache大哥,你把数据给我就可以了,我来慢慢写,保证帮你写完。

    有些写缓冲器有“写合并”的功能,比如CPU执行了4条写指令:写第0、1、2、3个字节,每次写1字节;写缓冲器会把这4个写操作合并成一个写操作:写word。对于内存来说,这没什么差别,但是对于硬件寄存器,这就有可能导致问题。

    所以对于寄存器操作,不会启动buffer功能;对于内存操作,比如LCD的显存,可以启用buffer功能。

    b. 写回(write back):

    新数据只是写入cache,不会立刻写入内存,cache和内存中的数据并不一致。

    新数据写入cache时,这一行cache被标为“脏”(dirty);当cache不够用时,才需要把脏的数据写入内存。

    使用写回功能,可以大幅提高效率。但是要注意cache和内存中的数据很可能不一致。这在很多时间要小心处理:比如CPU产生了新数据,DMA把数据从内存搬到网卡,这时候就要CPU执行命令先把新数据从cache刷到内存。反过来也是一样的,DMA从网卡得过了新数据存在内存里,CPU读数据之前先把cache中的数据丢弃。

    是否使用cache、是否使用buffer,就有4种组合(Linux内核文件arch\arm\include\asm\pgtable-2level.h):
    在这里插入图片描述

    第1种是不使用cache也不使用buffer,读写时都直达硬件,这适合寄存器的读写。

    第2种是不使用cache但是使用buffer,写数据时会用buffer进行优化,可能会有“写合并”,这适合显存的操作。因为对显存很少有读操作,基本都是写操作,而写操作即使被“合并”也没有关系。

    第3种是使用cache不使用buffer,就是“write through”,适用于只读设备:在读数据时用cache加速,基本不需要写。

    第4种是既使用cache又使用buffer,适合一般的内存读写。

    3.3, 驱动程序要做的事
    驱动程序要做的事情有3点:

    ① 确定物理地址

    ② 确定属性:是否使用cache、buffer

    ③ 建立映射关系

    参考Linux源文件,示例代码如下:
    在这里插入图片描述

    还有一个更简单的函数:
    在这里插入图片描述

    4,驱动编程

    我们在驱动程序中申请一个8K的buffer,让APP通过mmap能直接访问。

    ① 使用哪一个函数分配内存?

    我们应该使用kmalloc或kzalloc,这样得到的内存物理地址是连续的,在mmap时后APP才可以使用同一个基地址去访问这块内存。(如果物理地址不连续,就要执行多次mmap了)。

    关键代码现场编写,再完善文档。

    展开全文
  • 韦东山嵌入式Linux三大学习路线

    千次阅读 多人点赞 2020-12-21 18:43:56
    1. 理清学习资料 百问网嵌入式Linux的学习资料分为两部分: 第一部分:快速入门 第二部分:深入学习 1.1 快速入门 快速入门分为三条学习路线 1.1.1 路线一 学习单片机 针对单片机学习,你可以使用KEL、HAL库来快速...
  • QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载) 交流群二:QQ群:536785813(单片机-嵌入式) 公 众 号:百问科技 版本 日期 作者 说明 V1 2020 韦东山 导学教程 单片机教程(RTOS必备/硬件编程大全) ...
  • QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载) 交流群二:QQ群:536785813(单片机-嵌入式) 公 众 号:百问科技 版本 日期 作者 说明 V1 2020 韦东山 技术文档 1.适用场景 在前面引入中断时,我们曾经...
  • 课程按篇章可分为5篇,单独的视频专栏观看: 【第1篇】(IMX6ULL)新学习路线、视频介绍、资料下载、开发板基础操作 【第1篇】(STM32MP157)新学习路线、视频介绍、资料下载、开发板基础操作 【第2篇】Linux基本操作 ...
  • QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载) 交流群二:QQ群:536785813(单片机-嵌入式) 公 众 号:百问科技 版本 日期 作者 说明 V1 2020 韦东山 技术文档 在100ASK_IMX6ULL板子上支持其他型号的...
  • QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载) 交流群二:QQ群:536785813(单片机-嵌入式) 公 众 号:百问科技 版本 日期 作者 说明 V1 2020 韦东山 韦东山鸿蒙开发手册 请先参考《2.2.3 使用示例:...
  • QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载) 交流群二:QQ群:536785813(单片机-嵌入式) 公 众 号:百问科技 版本 日期 作者 说明 V1 2020 韦东山 技术文档 6.6 使用freetype显示一行文字 使用GIT...
  • 我叫韦东山,大学毕业后呆过两家小公司, 后来在一家大公司又锻炼了几年, 2008年开始自己做linux培训, 在这个小小领域里,我们做得很好。 非程序员可能不知道linux, 它是各类手机、电子产品的操作系统, ...
  • 作者:韦东山 参考文档: a. 内核 Documentation\devicetree\bindings\Pinctrl\ 目录下: Pinctrl-bindings.txt b. 内核 Documentation\gpio 目录下: Pinctrl-bindings.txt c. 内核 Documentation\devicetree\...
  •  韦东山 更多讲师课程  2003 年毕业于中国科学技术大学,电子专业、软件专业双学位。近10年嵌入式开发经验,曾ZTE公司负责Linux底层系统开发。 近5年作为特聘讲师在若干个有名的培训机构讲课。 擅长ARM系列方面的...
  • 我是韦东山,一直从事嵌入式Linux培训,最近打算连载一系列文章。 正在录制全新的嵌入式Linux视频,使用新路线,不再从裸机/uboot开始,效率更高。 对应文档也会写成书<<嵌入式Linux应用开发完全手册>>...
  • 韦东山 鸿蒙移植必备的基础知识

    千次阅读 2020-11-02 08:40:45
    QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载) 交流群二:QQ群:536785813(单片机-嵌入式) 公 众 号:百问科技 版本 日期 作者 说明 V1 2020 韦东山 适用于鸿蒙学员 1. 基础知识 移植内核对技术的...
  • 韦东山嵌入式Linux第一期视频

    万人学习 2014-11-29 12:20:18
    掌握写汇编代码的能力,可以分析任意裸板包括U-boot、内核里的相关汇编代码; 掌握常用的硬件部件的操作,比如GPIO,UART,I2C,LCD,触摸屏; 深入理解ARM体系统架构,可以写出具备中断功能的裸板程序,对程序现场...
  •  韦东山 更多讲师课程  2003 年毕业于中国科学技术大学,电子专业、软件专业双学位。近10年嵌入式开发经验,曾ZTE公司负责Linux底层系统开发。 近5年作为特聘讲师在若干个有名的培训机构讲课。 擅长ARM系列方面的...
  • QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载) 交流群二:QQ群:536785813(单片机-嵌入式) 公 众 号:百问科技 版本 日期 作者 说明 V1 2020 韦东山 技术文档 我们写过很多ping问题的解决方法文章,...
  • QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载) 交流群二:QQ群:536785813(单片机-嵌入式) 公 众 号:百问科技 版本 日期 作者 说明 V1 2020 韦东山 技术文档 第一章 在IMX6ULL上体验鸿蒙系统 请先...
  • 嵌入式Linux驱动教程(韦东山2期)—42386人已学习 课程介绍    1.没有废话,句句都是干货!学习后保证可以跟着视频完成相应的实验。 2.现场从0编写/调试工作中的绝大部分驱动,内容--- 理论 + 课程收益  拥有...
  • 在线课堂:https://www.100ask.net/index(课程观看) ...交流群一:QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载) 交流群二:QQ群:536785813(单片机-嵌入式) 公 众 号:百问科技 ...V
  • 1. 框架 鸿蒙是一套完整的、普通人可以直接使用的操作系统,跟Windows、安卓、IOS类似。 常见的错误观点是把鸿蒙跟Linux放在一起来对比,这不对: Linux只是一个内核,普通人无法使用 还需要在Linux之上安装各类...
  • 韦东山鸿蒙开发教程05 - 在STM32MP157上体验鸿蒙系统

    千次阅读 多人点赞 2020-12-02 17:01:51
    QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载) 交流群二:QQ群:536785813(单片机-嵌入式) 公 众 号:百问科技 版本 日期 作者 说明 V1 2020 韦东山 韦东山鸿蒙开发手册 鸿蒙内核Liteos-a的官方代码...
  • 韦东山:机会总是留给有准备的人

    千次阅读 2017-08-24 11:59:41
    最近电子发烧友(以下称'发烧友')采访了韦东山老师,本文是采访原稿,展示出来让大家更深入了解韦老师的同时也进一步学习嵌入式Linux经验。 机会总是留给有准备的人   发烧友:  为什么要学习掌握ARM裸机...
  •  韦东山 更多讲师课程  2003 年毕业于中国科学技术大学,电子专业、软件专业双学位。近10年嵌入式开发经验,曾ZTE公司负责Linux底层系统开发。 近5年作为特聘讲师在若干个有名的培训机构讲课。 擅长ARM系列方面的...
  • 韦东山所有视频教程的详细目录和可达目标
  • 作者:韦东山 前言: 本文,4200字,研究代码花了一天,写出来花了一天; 录视频估计又得花半天; 真怀念以前简单粗暴的生活啊: 拿起话筒就录视频, 先画好图?那是不需要的 文档?那是不存在的 真是洒脱........
  • 嵌入式Linux驱动教程(韦东山2期)

    万人学习 2015-07-07 14:50:19
    1.没有废话,句句都是干货!学习后保证可以跟着视频完成相应的实验。 2.现场从0编写/调试工作中的绝大部分驱动,内容--- 理论 +
  • QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载) 交流群二:QQ群:536785813(单片机-嵌入式) 公 众 号:百问科技 版本 日期 作者 说明 V1 2020 韦东山 韦东山鸿蒙系统开发教程 >>>视频教程在线观看介绍...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,300
精华内容 3,320
关键字:

韦东山