嵌入式Linux
文章平均质量分 80
分享在学习嵌入式Linux过程中的系统知识
北海的星辰大海
兴趣:嵌入式系统
展开
-
韦东山嵌入式Linux学习笔记之环境搭建——没有路由器情况下使PC、虚拟机和开发板三者互联的方法
最近学习韦东山老师的嵌入式Linux第一期,学习中遇到了PC、虚拟机和开发板三者互联的问题,看了配套资料的三者互联的教程文档后发现如果要三者互通就必须要有路由器作为中间桥梁,但是笔者的教研室网络环境比较复杂,不太适合原来教程中所提到的几种方法,故跟同学讨论决定实验在没有路由器的情况下能否实现三者的互通,最终在将有线网卡和无线网卡都用到的情况下实现了三者的互通,并且还不影响电脑正常上网。笔者的网络环...原创 2018-07-02 17:12:55 · 2722 阅读 · 3 评论 -
韦东山第3期嵌入式Linux项目-视频监控-1-v4l2视频框架分析
韦东山第3期嵌入式Linux项目-视频监控-1硬 件 :电脑、 JZ2440 开发板、 UVC 摄像头(推荐使用) 系 统 : Ubuntu9.10// 即光盘提供的那个虚拟机系统Uboot : u-boot-2012.04.01 // 即毕业班移植新 uboot 那个Kernel : linux-3.4.2 // 即毕业班移植新内核那个文件系统:fs_mini_mdev_new.tar...原创 2019-06-26 23:18:13 · 5611 阅读 · 4 评论 -
韦东山第3期嵌入式Linux项目-视频监控-2-从零写USB摄像头驱动(UVC驱动)
一、从零写USB摄像头驱动—分析描述符USB设备插入电脑后,电脑上就会相应的显示其是某种设备(U盘,摄像头,信号采集卡等等),表明这些设备“身份”的就叫做设备描述符。(就是一些格式化的数据)USB摄像头的描述符:使用 lsusb 工具可以将USB设备的详细信息打印出来,因此分析该工具的源码可以帮助我们打印描述符信息:lsusb.c:main dumpdev ...原创 2019-07-02 20:22:08 · 6980 阅读 · 5 评论 -
毕业班第2课移植最新UBOOT
毕业班第2课移植最新UBOOT(UBOOT 1.1.6为2006年版本)一.下载、建立source insight工程、编译、烧写、如果无运行分析原因tar xjf u-boot-2012.04.01.tar.bz2cd u-boot-2012.04.01make smdk2410_config //配置ubootmake由于编译器版本的问题编译不成功,需要升级编译器:安装最新的ar...原创 2019-06-17 11:06:59 · 308 阅读 · 0 评论 -
第30课 驱动调试
第30课 驱动调试打印:printk,自制proc文件自制工具根据内核打印的段错误信息分析修改内核第1.1节 驱动调试之printk原理1. 内核处理uboot传入的参数:使用printk将内核的一些信息打印出来(通过串口或者LCD屏幕),那么printk函数中就必然会有操作这些硬件的实现。但是printk最终会将信息打印到哪里呢?(串口或者LCD)这是由uboot中的 b...原创 2019-06-04 21:13:09 · 740 阅读 · 0 评论 -
第 27 课 DMA 驱动程序
第1节 DMA的引入翻译 2019-05-11 23:00:36 · 947 阅读 · 0 评论 -
第28课 hotplug/uevent机制
第28课 hotplug/uevent机制第一节 hotplug/uevent机制的介绍热拔插设备先来回顾之前的按键字符设备驱动程序:首先创建一个file_operations结构体,之后在入口函数中注册该设备,然后再创建类,再在类下创建设备:这里有个问题:为什么要在注册了设备之后要创建类并在类下创建一个设备呢??这么做的目的是为了让mdev根据这些信息来创建设备节点mdev又...翻译 2019-05-13 20:20:17 · 442 阅读 · 0 评论 -
韦东山嵌入式Linux学习笔记之——代码重定位005_重定位和清除BSS段的C函数实现
能用C函数就不要用汇编。进入start.S中修改代码:任务就是在init.c中分别实现上述两个C函数。void copy2sdram(volatile unsigned int *src, volatile unsigned int *dest, unsigned int len) /* src(r1), dest(r2), len(r2-r1) */{ unsigned int i = ...原创 2018-07-14 16:16:48 · 461 阅读 · 0 评论 -
韦东山嵌入式Linux学习笔记之——代码重定位004_代码重定位与位置无关码
将程序(包含可运行的代码和数据)从一个位置(flash)移动至另外一个位置运行或进行数据的读写成为代码重定位。代码重定位的根本原因是改善某个存储介质的某些缺陷(例如存取速度,读写限制等等)。在实际中我们可以只重定位程序的某一段(如数据data段或者代码text段),或者将整个程序进行重定位。现在考虑将整个程序重定位至SDRAM所需要的技术细节:① 从flash中将程序复制到(重定位)SDRAM,要...原创 2018-07-14 14:49:02 · 948 阅读 · 1 评论 -
韦东山嵌入式Linux学习笔记之——代码重定位003_链接脚本的解析与改进
一、链接脚本的解析注意:① 链接脚本中首先放所有程序的代码段text,那么这些程序的代码段按照什么样的顺序排列呢?在Makefile中有这些程序的排序② 这里的data数据段设置了加载地址0x800,表明在生成的bin文件中,data段在0x800的位置,而前面没有指定加载地址的text代码段和rodata只读数据段存放在bin文件中的0地址开始的位置。③ data数据段的重定位功能由前面的tex...原创 2018-07-13 22:36:41 · 446 阅读 · 1 评论 -
韦东山嵌入式Linux学习笔记之——代码重定位002_链接脚本的引入
① NOR启动:② nand 启动:上次讲到的g_char不能按照程序正确输出的原因是nor启动的时候g_char在nor flash中,其不可写的特性决定了输出结果。现在能否修改Makefile让nor启动时讲代码拷贝到SDRAM中,这样就可以实现全局变量的可读可写了。现在想在nor flash启动的时候将其中的代码段拷贝至SDRAM中0地址起始的空间,将全局变量g_char拷贝至0x30000...原创 2018-07-13 11:33:52 · 777 阅读 · 1 评论 -
韦东山嵌入式Linux学习笔记之——代码重定位001_段的概念_重定位的引入
在2440中,cpu的命令可以通过内存控制器直接到达SRAM、SDRAM、NOR flash中,因此可以将代码直接放在上述三种内存单元中直接运行,相应地就可以设置为SRAM、SDRAM或者NOR flash 启动机制。但是在实际应用中我们也可以设置nand flash启动,这是为什么呢?原因是这里用到了代码重定位的机制。(1)nand flash 启动: 随之而来的有一个问题,就是如果程序>...原创 2018-07-12 21:39:06 · 697 阅读 · 0 评论 -
韦东山Linux学习笔记之——虚拟机(Ubuntu 16.04)同时连接外网和内网三者互通的方法
在笔者之前发布的文章中说明了在没有路由器的情况下PC、虚拟机和开发板三者互通的方法。今天在学习过程中遇到一个问题,就是如果想在虚拟机服务器上下载编译器更新包,那么按照之前的方法仅仅让虚拟机服务器桥接PC的有线网卡组成PC、虚拟机和开发板三者的有线局域网是不够的。因为按照之前的方法,虚拟机处于封闭的局域网中,在之前的情况下只有PC可以正常连接外网。笔者经过试验找到了让虚拟机可以同时桥接内网局域网(三...原创 2018-07-11 16:48:00 · 3296 阅读 · 1 评论 -
韦东山嵌入式Linux学习笔记之——第12课第8节 字符设备驱动程序之定时器防抖动
注:本文部分内容摘自《鱼树学员笔记》。当按键按得比较快的时候,这里出现了两次中断值,也即产生了抖动。这里产生了“抖动”,按键是机械开关,按下松开时里面的金属弹片可能抖动了好几次。这种抖动产生了多次“脉冲”导致多次中断。方法:使用定时器来防抖动。定时器有两个概念:① 超时时间:② 时间到了之后的“处理函数”。可以在中断处理中,如定时 10ms 后处理确定按...原创 2018-07-16 20:29:54 · 555 阅读 · 0 评论 -
韦东山第3期嵌入式Linux项目-视频监控-3-在LCD上显示摄像头图像
韦东山第3期嵌入式Linux项目-视频监控-3-在LCD上显示摄像头图像原创 2019-07-10 23:04:41 · 3415 阅读 · 0 评论