3. file、inode结构体及chardevs数组等相关知识解析
摘要:https://blog.csdn.net/zqixiao_09/article/details/50850004 下图描述了Linux中虚拟文件系统,一般的设备文件与设备驱动程序间的函数调用关系 上图展现了一个应用程序调用字符设备驱动的过程,在设备驱动程序的设计中,一般而言,会关系file和ino
阅读全文
posted @
2018-06-29 22:37
Ocean&Star
阅读(289)
推荐(0)
2. 自动创建设备节点
摘要:https://blog.csdn.net/zqixiao_09/article/details/50849735 上一篇我们介绍到创建设备文件的方法,利用cat /proc/devices查看申请到的设备名,设备号。第一种是使用mknod手工创建:mknod filename type major
阅读全文
posted @
2018-06-29 22:26
Ocean&Star
阅读(730)
推荐(0)
1. cdev 结构体、设备号相关知识解析
摘要:https://blog.csdn.net/zqixiao_09/article/details/50839042 1、字符设备基础知识 1.1、设备驱动分类linux系统将设备分为3类:字符设备,块设备,网络设备。使用驱动程序: 》什么是字符设备: 》》是指只能一个字节一个字节读写的设备 》》不能
阅读全文
posted @
2018-06-29 21:59
Ocean&Star
阅读(1111)
推荐(0)
3.6.2.阻塞式IO的困境
摘要:本节通过实例代码运行结果,让大家看到在并发式IO访问时非阻塞IO遭遇的困境,由此引入非阻塞式IO。 3.6.2.1、程序中读取键盘 include include include int main(void) { // 读取键盘 // 键盘就是标准输入,stdin char buf[100]; me
阅读全文
posted @
2018-06-29 21:09
Ocean&Star
阅读(204)
推荐(0)
3.6.1.非阻塞IO
摘要:本节讲解什么是非阻塞IO,如何将文件描述符修改为非阻塞式 3.6.1.1、阻塞与非阻塞 (1)阻塞是指函数调用会被阻塞。本质是当前进程调用了函数,进入内核里面去后,因为当前进程的执行条件不满足,内核无法里面完成操作,就挂起这个进程,去执行其他进程。默认使用阻塞IO (2)非阻塞IO当条件不满足时直接
阅读全文
posted @
2018-06-29 20:41
Ocean&Star
阅读(196)
推荐(0)
5.7.1.framebuffer介绍
摘要:本节介绍framebuffer的概念和来源、设计思想,fb设备的应用层接口等,为下节使用framebuffer应用编程打基础。 5.7.1.1、什么是framebuffer (1).裸机中如何操作LCD Soc里面有CPU,LCD控制器;外部有LCD的驱动器,驱动器后面带着屏幕,驱动器和控制器之间使
阅读全文
posted @
2018-06-29 20:31
Ocean&Star
阅读(233)
推荐(0)
5.4.17.将驱动添加到内核中
摘要:5.4.17.1、驱动的存在形式 (1)野生,优势是方便调试开发,所以在开发阶段都是这种 (2)家养,优势可以在内核配置时make menuconfig决定内核怎么编译,方便集成 5.4.17.2、驱动开发的一般步骤 (1)以模块的形式在外部编写、调试 (2)将调试好的驱动代码集成到kernel中
阅读全文
posted @
2018-06-29 20:11
Ocean&Star
阅读(229)
推荐(0)
5.4.13、从驱动框架角度再来分析一下gpiolib
摘要:5.4.13.2、从驱动框架角度再来分析一下gpiolib (1)之前的分析已经告一段落,截至目前我们已经搞清楚了gpiolib的建立工程。但是这只是整个gpiolib建立的一部分,是厂商驱动工程师负责的那一部分;还有另一部分是内核开发者提供的驱动框架的那一部分,就是我们后面要去分析的第2条主线。
阅读全文
posted @
2018-06-29 20:09
Ocean&Star
阅读(321)
推荐(0)
5.4.10.linux内核的gpiolib学习2
摘要:总结:先分析杂碎:struct s3c_gpio_chip,s5pv210_gpio_4bit 5.4.10.1、struct s3c_gpio_chip gpiolib库的初始化实质就是对这个结构体数组进行赋值 (1)这个结构体是一个GPIO端口的抽象,这个结构体的一个变量就可以完全的描述一个IO
阅读全文
posted @
2018-06-29 19:49
Ocean&Star
阅读(299)
推荐(0)
5.4.9.linux内核的gpiolib学习1
摘要:1. gpiolib学习重点 (1)gpiolib的建立过程 (2)gpiolib的使用方法:申请、使用、释放 (3)gpiolib的架构:涉及哪些目录的哪些文件 2. gpiolib的学习方法 可跳过 3.什么是gpiolib,为什么要有gpiolib? linux中从2.6.35以后就开始有gp
阅读全文
posted @
2018-06-29 10:01
Ocean&Star
阅读(265)
推荐(0)
U-Boot在启动之初为何要关闭Cache和MMU?
摘要:转载:https://blog.csdn.net/MingLLu/article/details/50585557 1.cache的定位 cache是位于主存(即是内存)与CPU内部的寄存器之间的一个存储设施,用来加快cpu与内存之间 数据与指令的传输速率,从而加快处理的速度。 2.cache的作用
阅读全文
posted @
2018-06-29 09:54
Ocean&Star
阅读(1217)
推荐(0)
3.9.6.7soekct实践编程1----------待整理
摘要:本节开始编写基于TCP的客户端和服务器连接通信程序 3.9.6.1、服务器端程序编写 (1)socket:打开一个文件描述符 (2)bind:让服务器和当前运行服务器的电脑IP绑定。做服务器的电脑必须有一个外网IP地址,做客户端的电脑可以没有,因为客户端可以通过路由器[路由器有外网IP地址]连接到I
阅读全文
posted @
2018-06-29 09:23
Ocean&Star
阅读(265)
推荐(0)
3.9.4.socket编程接口介绍
摘要:本节介绍linux API中与网络编程相关的接口函数,后面的实战编程中都要用到这些函数。 3.9.4.1、建立连接 (1)socket。socket函数类似于open,用来打开一个网络连接,如果成功则返回一个网络文件描述符(int类型),之后我们操作这个网络连接都通过这个网络文件描述符。 (2)bi
阅读全文
posted @
2018-06-29 08:50
Ocean&Star
阅读(245)
推荐(0)
3.9.3.TCP协议的学习2
摘要:本节接上节继续讲解TCP协议,主要讲了TCP协议建立连接和关闭连接时的握手方法,最后讲了使用TCP来实现的常见应用层协议。 3.9.3.1、TCP的三次握手 (1)建立连接需要三次握手 (2)建立连接的条件:服务器listen时客户端主动发起connect。 3.9.3.2、TCP的四次握手 (3)
阅读全文
posted @
2018-06-29 08:45
Ocean&Star
阅读(170)
推荐(0)
1、将自己的代码上传到git库
摘要:https://www.cnblogs.com/lanxiang/p/7487971.html
阅读全文
posted @
2018-06-29 00:18
Ocean&Star
阅读(245)
推荐(0)
3.9.2.TCP协议的学习1
摘要:本节详细借助TCP协议的特性,重点是TCP协议如何保证实现可靠书擦拭的是指 3.9.2.1、关于TCP理解的重点 (1)TCP协议工作在传输层,对上服务socket接口,对下调用IP层 (2)TCP协议面向连接,通信前必须先3次握手建立连接关系后才能开始通信。 (3)TCP协议提供可靠传输,不怕丢包
阅读全文
posted @
2018-06-28 23:53
Ocean&Star
阅读(143)
推荐(0)
3.9.1.linux网络编程框架
摘要:参考:https://blog.csdn.net/guoguo527/article/details/52078962 本节讲述网络编程的框架,分层思想和TCP/IP协议的介绍,BS架构和CS架构的介绍等。 3.9.1.1、网络是分层的 (1)OSI 7层模型 传输层 应用层:定义应用程序的功能,
阅读全文
posted @
2018-06-28 23:44
Ocean&Star
阅读(309)
推荐(0)
3.8.6.网络通信基础知识5
摘要:3.8.6.1、IP地址分类[IPv4] (1)IP地址本质是一个32位二进制,在网络通信数据包中就是32位二进制,而在人机交互中为了方便儿女使用点分十进制显示。 二进制方式 0xffffffff 0xC0A80166/0x6601A8C0 本质 点分十进制方式 255.255.255.255 19
阅读全文
posted @
2018-06-28 23:01
Ocean&Star
阅读(201)
推荐(0)
3.8.5.网络通信基础知识4
摘要:1.DHCP动态主机配置协议 每台计算机的徐娅有一个IP地址,而且局域网内部个电脑IP地址不能发重复,分组会地址冲突 吗计算机的IP地址可以静态涉资那个,可以因为可以东铁营分片 东莞疼迫使局域网的DHCOP服务i下来协议的,很多设置的嫩提供都会从红牛,比如路由器 动态嗯的优势:fanb姐u任何端口,
阅读全文
posted @
2018-06-28 22:42
Ocean&Star
阅读(197)
推荐(0)
3.8.4.网络通信基础知识3
摘要:1、路由器 (1)路由器是局域网和外部网络通信的出入口。外部网络必须通过路由器才能到局域网内,局域网也必须通过路由器才能与外部网络进行通信。路由器用来做网关。 (2)路由器将整个internet划分成一个个局域网[子网],却又相互连通。 (3)路由器对内管理子网[局域网],可以在路由器中设置子网的网
阅读全文
posted @
2018-06-28 22:27
Ocean&Star
阅读(203)
推荐(0)
3.8.3.网络通信基础知识2
摘要:1、OSI七层网络模型 物理层,硬件链路层,网络层,传输层,表现层,会话层,应用层 物理层是硬件,数据链路层半硬件半软件 2、网络设备[网络通信必须借助一定的硬件设备才能通信] 2.1、比如网卡 (1)计算机上网必备硬件设备,CPU是不能上网的,CPU靠网卡来连接外部网络。 (SoC如果集成了网卡才
阅读全文
posted @
2018-06-28 20:30
Ocean&Star
阅读(262)
推荐(0)
3.8.2 网络通信基础知识
摘要:1、网络通信的发展历程 单机阶段 局域网阶段 广域网internet阶段[拉电线] 移动互联网阶段[智能手机,已经成熟] 物联网阶段 2、三大网络 电信网(电话,语音)、电视网络、互联网,三网合一。 3、网络通信的传输媒介 无线传输:WIFI、蓝牙、zigbee、4G/5G/GPRS等 有线通信:双
阅读全文
posted @
2018-06-28 19:03
Ocean&Star
阅读(286)
推荐(0)
3.8.1、网络通信概叙
摘要:1、每个进程都是一个任务,每个应用运行一次就是一个进程,进程之间可以通信[网络域套接字socket],但是通信麻烦,线程可以解决这个问题。 网络通信就是位于网络中不同主机上面的2个进程之间的通信。 2、网络通信的层次[架构] 硬件部分:网卡 操作系统底层:网卡驱动 操作系统API:socket接口m
阅读全文
posted @
2018-06-28 18:59
Ocean&Star
阅读(161)
推荐(0)
2.11.2.ubuntu14.04上网及安装openssh
摘要:本节详细介绍ubuntu14.04的网络配置问题,然后安装openssh server,最后用sshsecureshell登录。 2.11.2.1、ubuntu14.04上网问题 (1)虚拟机上网有2种模式,NAT和桥接。 (2)虚拟机上网配置要注意这几个地方:第一个要注意选择NAT还是桥接模式;第
阅读全文
posted @
2018-06-27 22:42
Ocean&Star
阅读(200)
推荐(0)
2.11.1.移植前的准备工作
摘要:本节介绍uboot移植工作正式开始前的准备工作,主要是环境搭建和必备工具的使用。 2.11.1.1、三星移植过的uboot源代码准备 (1)三星对于S5PV210的官方开发板为SMDKV210,对应的移植过的uboot是:网盘/2.uboot和linux内核移植(努力更新中)\资源下载\三星官方为2
阅读全文
posted @
2018-06-27 22:40
Ocean&Star
阅读(192)
推荐(0)
0.Boot Loader的概念和功能
摘要:转载:http://blog.chinaunix.net/uid 20543672 id 94371.html 1、嵌入式Linux软件结构与分布 在一般情况下嵌入式Linux系统中的软件主要分为以下及部分: (1)引导加载程序:其中包括内部ROM中的固化启动代码和Boot Loader两部分。 而
阅读全文
posted @
2018-06-27 22:36
Ocean&Star
阅读(1415)
推荐(0)
5.4.5.在内核中添加或去除某个驱动
摘要:1. 去除九鼎led驱动/添加led驱动框架支持 在哪里 led驱动框架 操作 进入kernel的目录
阅读全文
posted @
2018-06-27 22:29
Ocean&Star
阅读(239)
推荐(0)
5.4.3.初步分析led驱动框架源码1
摘要:本节对led框架的核心代码led class.c文件进行分析,主要分析了subsys_initcall宏。 5.4.3.1、涉及到的文件 (1)led core.c (2)led class.c 5.4.3.2、subsys_initcall (1)经过基本分析,发现LED驱动框架中内核开发者实现的
阅读全文
posted @
2018-06-27 22:27
Ocean&Star
阅读(216)
推荐(0)
5.4.2.内核驱动框架中LED的基本情况
摘要:本节综合分析了2.6.35.7内核中LED驱动框架的整体设计,相关的文件位置,九鼎移植时LED驱动的实现方法等。 5.4.2.1、相关文件 (1)drivers/leds目录,这个目录就是驱动框架规定的LED这种硬件的驱动应该待的地方。 (2)led class.c和led core.c,这两个文件
阅读全文
posted @
2018-06-27 22:22
Ocean&Star
阅读(206)
推荐(0)
2.16.13.内核中架构相关代码简介
摘要:2.16.13.1、内核代码基本分为3块 (1)arch。 本目录下全是cpu架构有关的代码 (2)drivers 本目录下全是硬件的驱动 (3)其他 相同点是这些代码都和硬件无关,因此系统移植和驱动开发的时候这些代码几乎都是不用关注的。 2.16.13.2、架构相关的常用目录名及含义 (1)mac
阅读全文
posted @
2018-06-27 22:13
Ocean&Star
阅读(270)
推荐(0)
2.16.12.cmdline常用参数
摘要:2.16.12.1、格式简介 (1)格式就是由很多个项目用空格隔开依次排列,每个项目中都是项目名=项目值 (2)整个cmdline会被内核启动时解析,解析成一个一个的项目名=项目值的字符串。这些字符串又会被再次解析从而影响启动过程。 2.16.12.2、root= (1)这个是用来指定根文件系统在哪
阅读全文
posted @
2018-06-27 22:12
Ocean&Star
阅读(353)
推荐(0)
2.16.11.init进程详解2
摘要:2.16.11.1、打开控制台 (1)linux系统中每个进程都有自己的一个文件描述符表,表中存储的是本进程打开的文件。 (2)linux系统中有一个设计理念:一切届是文件。所以设备也是以文件的方式来访问的。我们要访问一个设备,就要去打开这个设备对应的文件描述符。譬如/dev/fb0这个设备文件就代
阅读全文
posted @
2018-06-27 22:10
Ocean&Star
阅读(250)
推荐(0)
2.16.10.init进程详解1
摘要:2.16.10.1、init进程完成了从内核态向用户态的转变 (1)一个进程2种状态。init进程刚开始运行的时候是内核态,它属于一个内核线程,然后他自己运行了一个用户态下面的程序后把自己强行转成了用户态。因为init进程自身完成了从内核态到用户态的过度,因此后续的其他进程都可以工作在用户态下面了。
阅读全文
posted @
2018-06-27 21:59
Ocean&Star
阅读(302)
推荐(0)
2.16.9.内核启动的C语言阶段6
摘要:本节重点讲解了rest_init函数中创建三个内核线程以及对这三个内核线程的介绍,本节课听完后就明白了操作系统最终的走向和归宿。 2.16.9.内核启动的C语言阶段6 2.16.9.1、操作系统去哪了 (1)rest_init中调用kernel_thread函数启动了2个内核线程,分别是:kerne
阅读全文
posted @
2018-06-27 21:48
Ocean&Star
阅读(169)
推荐(0)
2.16.8.内核启动的C语言阶段5
摘要:本节讲解start_kernel函数中剩余部分函数调用直到rest_init的部分,并无太多重点细节。 2.16.8.1、setup_command_line (1)也是在处理和命令行参数cmdline有关的任务。 2.16.8.2、parse_early_param&parse_args (1)解
阅读全文
posted @
2018-06-27 21:32
Ocean&Star
阅读(177)
推荐(0)
2.16.7.内核启动的C语言阶段4
摘要:本节讲解setup_arch函数中对cmdline的处理,重点讲解了cmdline的传递方式、确认方式和其对内核的影响和意义。 2.16.6.3、setup_arch函数进行了基本的cmdline处理 (1)这里说的cmdline就是指的uboot给kernel传参时传递的命令行启动参数,也就是ub
阅读全文
posted @
2018-06-27 21:16
Ocean&Star
阅读(141)
推荐(0)
2.16.6.内核启动的C语言阶段3
摘要:本节讲解setup_arch函数中的machine查找的部分,初步分析了内核对机器码的定义和存储方式、比对方式、获取方式。 2.16.6.1、setup_arch函数简介 setup_arch(&command_line); (1)从名字看,这个函数是CPU架构相关的一些创建过程。 (2)实际上这个
阅读全文
posted @
2018-06-27 21:13
Ocean&Star
阅读(173)
推荐(0)
2.16.5.内核启动的C语言阶段2
摘要:本节开始按照代码执行路径分析内核的C阶段。本节课主要讲了printk函数的工作原理和内核初始化打印出banner信息的部分。 参考:http://blog.chinaunix.net/uid 20543672 id 3157283.html 2.16.5.1、杂碎 (1)smp。smp就是对称多处理
阅读全文
posted @
2018-06-27 21:05
Ocean&Star
阅读(170)
推荐(0)
2.16.4.内核启动的C语言阶段1
摘要:本节讲述内核学习的学习思路、学习方法和主体线路。本节课程的学习目的是让大家对内核的特点和不同的学习思路有个认识。 2.16.4.1、这一块的学习思路 (1)抓大放小,不深究. (2)感兴趣可以就某个话题去网上搜索资料学习 (3)重点局部深入分析 2.16.4.2、具体学习方法 (1)顺着代码执行路径
阅读全文
posted @
2018-06-27 21:02
Ocean&Star
阅读(191)
推荐(0)
2.16.3.内核启动的汇编阶段
摘要:参考https://blog.csdn.net/skyflying2012/article/details/41344377 本节是内核启动的汇编阶段剩余内容,主要是cpu的校验、机器码的校验、传参tag的校验、页表的创建、各种段的处理等。 2.16.3.1、__lookup_processor_t
阅读全文
posted @
2018-06-27 21:01
Ocean&Star
阅读(282)
推荐(0)
2.16.2.head.S文件分析1
摘要:本节开始分析head.S文件,主要分析了内核运行的虚拟地址与物理地址,内核真正入口以及启动条件等。 2.16.2.1、内核运行的物理地址与虚拟地址 (1)KERNEL_RAM_VADDR(VADDR就是virtual address),这个宏定义了内核运行时的虚拟地址。值为0xC0008000 (2
阅读全文
posted @
2018-06-27 20:43
Ocean&Star
阅读(262)
推荐(0)
2.16.1.做好内核分析的准备工作
摘要:本节课开始建立工程、分析Makefile等,主要目的是为开始内核代码的分析扫清障碍,做好准备工作。 2.16.1.1、删除无用文件 (1)官方版本的kernel中是支持各种硬件架构、各种开发板的,因此有很多文件夹和文件和我们无关,在建立SI工程前应该删掉这些家伙。 (2)我们现在分析的是开发板厂商九
阅读全文
posted @
2018-06-27 20:37
Ocean&Star
阅读(213)
推荐(0)
Linux内核中Makefile、Kconfig和.config的关系
摘要:转载:http://emb.hqyj.com/Column/7565.html 1、Linux内核如此庞大(几万个文件),目录又分为很多层,它是如何将各层目录下的文件关联起来的? linux内核通过层层目录管理,形成了一个树形目录[内核源码树],这是一个树形结构。从数据结构管理方面看,对于一颗非标准
阅读全文
posted @
2018-06-27 20:22
Ocean&Star
阅读(1461)
推荐(1)
Linux 内核中的 kconfig 原理
摘要:转载:https://blog.csdn.net/qqliyunpeng/article/details/50858075 内核源码中是怎么实现menuconfig 1、第一步:配置生成.conf 当执行make menuconfig时,调用的是scripts/Kconfig/Makefile文件中
阅读全文
posted @
2018-06-27 20:15
Ocean&Star
阅读(1013)
推荐(0)
2.15.9.menuconfig的实验学习思路
摘要:本节总结menuconfig的原理并且提出一些验证思路并去实际验证,目的是让大家加深理解menuconfig的同时学会通过实验验证的方法进行学习。 2.15.9.1、验证menuconfig和.config的关系 (1)make menuconfig时,会读取.config中的配置值来初始化menu
阅读全文
posted @
2018-06-27 20:09
Ocean&Star
阅读(237)
推荐(0)
2.19.2.busybox的移植实战
摘要:/ 一. busybox制作成功 / 实验目的:ls /root/rootfs/oceanstar_rootfs/my_busybox/ (可以看到4个文件夹表示制作busybox成功,这个实验已经做过了) (1). windows电脑下的F:\winshare\rootfs\busybox 1.2
阅读全文
posted @
2018-06-27 20:03
Ocean&Star
阅读(477)
推荐(0)
2.19.1.根文件系统的构建路线
摘要:2.19.1.1、课程安排变化。 2.19.1.2、先逐步构建文件夹形式根文件系统然后制作烧录镜像 (1)rootfs有2种格式:nfs方式启动的文件夹形式的rootfs和用来烧录的镜像形式的rootfs。 (3)我们先从空文件夹开始,逐步向其中添加一些rootfs中必备的东西,然后做一步就用nfs
阅读全文
posted @
2018-06-27 19:57
Ocean&Star
阅读(344)
推荐(0)
0.嵌入式系统 Boot Loader 技术内幕
摘要:转载:https://www.ibm.com/developerworks/cn/linux/l btloader/ 1 引言 一个嵌入式Linux系统从软件的角度看通常分为四个层次 引导加载程序:包括固化在固件firmware中的boot代码[内部ROM中的固话启动代码]和bootloader两大
阅读全文
posted @
2018-06-27 19:47
Ocean&Star
阅读(321)
推荐(0)
0.U-boot的简介
摘要:转载:http://blog.chinaunix.net/uid 20543672 id 94372.html 一、U boot的起源 U Boot是Das U Boot的简称,其含义是Universal Boot Loader,是遵循GPL条款的开放源码项目。一开始德国DENX软件工程中心的Wol
阅读全文
posted @
2018-06-27 18:55
Ocean&Star
阅读(397)
推荐(0)
2.11.移植uboot
摘要:2.11.1、三星移植过的uboot 准备源码:android_uboot_smdkv210.tar 2.11.2、ubuntu14.04上网及安装openssh 参考价值不太,自己折腾吧,不要浪费时间了 注意:今年别折腾了,它依赖的库太多了。 2.11.3、移植初体验 (1)、直接编译 a、复制并
阅读全文
posted @
2018-06-27 18:52
Ocean&Star
阅读(227)
推荐(0)
2.18.6.rootfs中还应该有什么
摘要:1. rootfs最重要是的linuxrc 2. 其他 ls / bin和sbin:可选,里面放了应用程序,比如常用shell命令(这些命令都是应用程序),区别在于sbin目录是linux系统的管理员用的,bin是普通用户用的 cdrom:挂载CD,可选 home:用户管理目录,可选 lost+fo
阅读全文
posted @
2018-06-27 18:40
Ocean&Star
阅读(218)
推荐(0)
2.18.5.到底什么是linuxrc
摘要:1. /linuxrc是一个应用程序,和内核源码无关。 /linuxrc在开发板当前系统内核下可执行。在开发板中的/linuxrc是用arm linux gcc编译,静态链接的 2. /linuxrc直接或者间接的调用用户界面程序,引出其他的所有东西,相当于init。它是rootfs中最重要的成分
阅读全文
posted @
2018-06-27 18:32
Ocean&Star
阅读(604)
推荐(0)
2.18.4.nfs方式启动自制简易文件夹形式的rootfs
摘要:1. 创建简易rootfs cd /root/porting_x210/rootfs/rootfs touch linuxrc 2.将rootfs挂载到nfs共享目录 vi /etc/exports/root/porting_x210/rootfs/rootfs (rw,sync,no_root_s
阅读全文
posted @
2018-06-27 18:28
Ocean&Star
阅读(648)
推荐(0)
5.4.1.何谓驱动框架
摘要:本节主要解释了什么是驱动框架,为什么需要驱动框架,基于驱动框架写驱动有什么优势等问题。 5.4.1.1、驱动是谁写的 (1)驱动开发工程师 (2)内核维护者 5.4.1.2、驱动编程协作要求 (1)接口标准化 (2)尽量降低驱动开发者难度 5.4.1.3、到底什么是驱动框架 (1)内核中驱动部分维护
阅读全文
posted @
2018-06-27 18:19
Ocean&Star
阅读(314)
推荐(0)
2.15.8.Kconfig文件详解2
摘要:本节进一步解释Kconfig中配置项的细节,如depends、select等关键字的作用。 2.15.8.1、depends的含义 (1)depends中文意思是“取决于”或者“依赖于”,所以depends在这里的意思是:本配置项依赖于另一个配置项。如果那个依赖的配置项为Y或者M,则本配置项才有意义
阅读全文
posted @
2018-06-26 16:19
Ocean&Star
阅读(223)
推荐(0)
2.15.7.Kconfig文件详解1
摘要:本节详解Kconfig文件的格式、作用等 2.15.7.1、Kconfig的格式 (1)Kconfig按照一定的格式来书写,menuconfig程序可以识别这种格式,然后从中提取出有效信息组成menuconfig中的菜单项。 (2)将来在做驱动移植等工作时,有时需要自己添加Kconfig中的一个配置
阅读全文
posted @
2018-06-26 16:17
Ocean&Star
阅读(326)
推荐(0)
2.15.6.menuconfig的工作原理
摘要:本节讲解menuconfig的工作原理,主要揭示了menuconfig和.config、Kconfig文件的关联。 2.15.6.1、menuconfig本身由一套软件支持 (1)linux为了实现图形化界面的配置,专门提供了一套配置工具menuconfig。 (2)ncurses库是linux中用
阅读全文
posted @
2018-06-26 16:11
Ocean&Star
阅读(1087)
推荐(0)
2.15.5.menuconfig的使用和演示
摘要:2.15.5.1、使用说明解释 (1)make ,menuconfig中本身自带的提示就有所有的用法,这里只要全部理解就可以了。 (2)menuconfig中间的选择区中有很多个选择项,每个选择项对应.config文件中的一个配置项,每一个选择项都可以被选择和配置操作,选择区中的每一项都是有子目录的
阅读全文
posted @
2018-06-26 15:57
Ocean&Star
阅读(799)
推荐(0)
2.15.4.内核的配置原理1
摘要:2.15.4.1、烧写测试 2.15.4.2、配置的关键是得到.config文件 (1).config以.开头,是一个隐藏文件,因此平时是看不到的,需要ls a来看 (2)当我们make distclean后(也就是说默认情况下)是没有.config文件的,我们配置的两步过程就是为了得到内容合适的.
阅读全文
posted @
2018-06-26 15:28
Ocean&Star
阅读(210)
推荐(0)
2.15.3.内核配置和编译体验
摘要:本节进行内核的三步配置编译过程,目的是让大家学会内核的配置编译操作,方便之后学习原理。 2.15.3.1、先确认Makefile (1)主要是检查交叉编译工具链有没有设置对。CROSS_COMPILE ?= /usr/local/arm/arm 2009q3/bin/arm none linux g
阅读全文
posted @
2018-06-26 15:20
Ocean&Star
阅读(262)
推荐(0)
2.15.2.linux内核源码目录结构2
摘要:本节讲解内核源码根目录下的各个文件夹,并且把一些重要文件夹的作用简单讲解。 (1)arch。arch是architecture的缩写,意思是架构。arch目录下是好多个不同架构的CPU的子目录,譬如arm这种cpu的所有文件都在arch/arm目录下,X86的CPU的所有文件都在arch/x86目录
阅读全文
posted @
2018-06-26 15:18
Ocean&Star
阅读(303)
推荐(0)
2.15.1.linux内核源码目录结构1
摘要:2.15.1.1、源码从哪里来 (1)之前讲过,我们使用2.6.35.7版本的内核。这个版本的内核有三种:第一种是kernel.org上的官方版本,第二种是三星移植过的,第三种是九鼎X210的移植版本。我们讲课时使用第三种内核来讲解,后面的移植实验使用第二种内核来移植。 (2)源码在开发板光盘中有。
阅读全文
posted @
2018-06-26 15:16
Ocean&Star
阅读(198)
推荐(0)
2.14.5.选择合适版本的内核
摘要:2.14.5.1、linux内核版本变迁简史 (1)linux0.01。初版 (2)linux0.11。很多讲linux内核源代码解析的书都是以这个版本为原本来讲。《图解linux内核设计的艺术》 (3)linux2.4。比较接近现代的版本,很多经典的书都是以2.4版本内核为参照的,譬如《LDD3》
阅读全文
posted @
2018-06-26 15:09
Ocean&Star
阅读(296)
推荐(0)
2.14.4.linux内核的模块化设计
摘要:2.14.4.1、什么是模块化设计 (1)因为linux内核很庞大,代码量很大、东西很多,如果设计时完全设计成一体(各个文件、各个函数之间紧耦合),复杂度超出了人所能理解的范围。所以模块化设计也是一种必要。 (2)模块化设计就是内核中各个功能模块在代码上是彼此独立的,譬如说调度系统和内存管理系统之间
阅读全文
posted @
2018-06-26 15:07
Ocean&Star
阅读(507)
推荐(0)
2.14.2.内核和驱动的关联
摘要:2.14.2.1、学习linux的思路 (1)对庞大的整体要有个认识。学习路线就是先建立框架和整体,然后逐渐去学习各个细节部分,逐步细化。 (2)对各分层的作用要清楚。 (3)对层次间的关联和互相调用要理解。 2.14.2.2、驱动属于内核的一部分 (1)驱动就是内核中的硬件设备管理模块 (2)驱动
阅读全文
posted @
2018-06-26 15:04
Ocean&Star
阅读(324)
推荐(0)
2.14.1.内核和发行版的区别.zhu
摘要:2.14.1.1、到底什么是操作系统 (1)linux、windows、android、ucos就是操作系统 (2)操作系统本质上是一个程序,由很多个源文件构成,需要编译连接成操作系统程序(vmlinz、zImage) (3)操作系统的主要作用就是管理计算机硬件,给应用程序提供一个运行环境。 2.1
阅读全文
posted @
2018-06-26 15:02
Ocean&Star
阅读(692)
推荐(0)
2.18.3.自己制作ext3格式的根文件系统实验笔记
摘要:1. mke2fs:相当于一个压缩软件,Ubuntu默认安装了,是用来制作镜像格式的根文件系统的。 查看ubuntu是否安装了软件 mke2fs(Usage: mke2fs [ c| l filename] [ b block size] [ C cluster size]) mkfs.ext2 w
阅读全文
posted @
2018-06-26 14:58
Ocean&Star
阅读(1775)
推荐(0)
2.18.1_2. 根文件系统概述
摘要:1、 根文件系统本质 (1)(根)文件系统本质是一个目录结构 2、根文件系统的形式 (1) 镜像形式:将文件夹形式的rootfs用特定的工具压缩而来的,可以烧录。烧录后系统会挂载rootfs。 (2)文件夹形式:里面包含特定内容 3、注意 (1)rootfs相当于一个软件,可以管理存储设备的扇区,把
阅读全文
posted @
2018-06-26 14:53
Ocean&Star
阅读(389)
推荐(0)
0. 视频监控系统架构设计
摘要:0、视频监控系统架构设计 0.1、功能指标 (1)搭建共享文件夹 (2)实现Ubuntu的NAT上网和桥接上网 (3)搭建局域网 (4)搭建nfs服务器、tftp服务器 (5)将uboot、kernel、rootfs镜像文件下载到开发板中 (6)移植MPP,ORTP库和WiFi库 (7)编写应用程序
阅读全文
posted @
2018-06-03 11:48
Ocean&Star
阅读(1889)
推荐(0)
7、无线wifi传输视频开发
摘要:7 无线wifi传输视频开发 MT7601的驱动源码提供了两种:AP模式和STA模式源码。此时我使用USB作为AP热点,电脑作为STA模式,并使用ORTP实现无线传输视频 7.1、AP模式下USB WIFI驱动移植 (1)准备wifi源码并将源码复制到ubuntu服务器下解压 源码在主机的:E:\w
阅读全文
posted @
2018-06-03 11:45
Ocean&Star
阅读(931)
推荐(0)
6、代码设计
摘要:4、代码设计 目的:使用OPRT库来实现局域网视频实时传输 参考samle_venc.c进行ortp开发 4.1、程序流程如下 step1:定义变量,VPSS,VENC,零散变量 step2:初始化sys变量 step3:mpp系统初始化 step4:启动vi设备&通道,采集图像 step5:启动v
阅读全文
posted @
2018-06-03 11:31
Ocean&Star
阅读(647)
推荐(0)
5、ORTP库移植
摘要:1、ORTP的引入 为什么要使用RTP:http://blog.51cto.com/ticktick/462746 RTP协议分析:http://www.xuebuyuan.com/739929.html 总结:OPTP是一个C语言写的开源协议库,它的本质是实现一个服务器,可以用来在客户端和服务器之
阅读全文
posted @
2018-06-03 11:29
Ocean&Star
阅读(590)
推荐(0)
4、将MPP部署到开发板上
摘要:在一般的嵌入式开发中,只要将uboot,kernel,rootfs下载到开发板上,就可以进行程序开发了。但是海思又进一步的把一些常用视频编解码算法等封装到MPP平台中,进一步简化了工程师的开发难度。 1、什么是MPP 海思提供的媒体处理软件平台(Media Process Platform,简称 M
阅读全文
posted @
2018-06-03 11:28
Ocean&Star
阅读(1701)
推荐(0)
3、将uboot,kernel,rootfs下载到开发板上
摘要:将uboot,kernel,rootfs下载到开发板上 1、为什么要下载 所谓下载,也称烧录,部署。 1.1、什么是u boot Hi3518EV200 单板的 Bootloader 采用 U boot。 u boot是一种普遍用于嵌入式系统中的Bootloader,Bootloader是在操作系统
阅读全文
posted @
2018-06-03 11:26
Ocean&Star
阅读(2424)
推荐(0)
ubuntu14.04安装HI3518EV200的过程
摘要:1.海思SDK安装编译 Hi3518EV200_SDK是基于Hi3518EV200_DMEB的软件开发包,包含了在Linux相关应用开发时使用的各种工具及其源代码,是用户开发中最基本的软件平台。 1.1 安装 Hi3518EV200 SDK 步骤 1. 拷贝。将 Hi3518E_SDK_V1.0.3
阅读全文
posted @
2018-06-03 11:24
Ocean&Star
阅读(1423)
推荐(0)
2、ubuntu16.06安装Hi3518EV200 SDK
摘要:HI3518EV200 SDK安装并编译osdr。 1、开发环境 windows10电脑 + 虚拟机14 Pro + Ubuntu16.0.4 2、拷贝并解压。将 Hi3518E_SDK_V1.0.3.0.tgz拷贝到 Linux 服务器上。 cd ~/sambashare/ cp /mnt/hgf
阅读全文
posted @
2018-06-03 11:21
Ocean&Star
阅读(4644)
推荐(0)
1、嵌入式Linux开发环境搭建
摘要:1、前提准备 硬件环境: 笔记本电脑 软件环境: 裸机安装Windows10_64位 VMWare版本:VMWare WorkStation 14Pro Ubuntu版本:Ubuntu16.04LTS 总结:开发环境是主机安装windows10家庭版,然后使用vmware创建Ubuntu虚拟机,在w
阅读全文
posted @
2018-06-03 11:21
Ocean&Star
阅读(13629)
推荐(0)