
嵌入式&&Linux
文章平均质量分 59
mainn
本人是移动互联应用技术专业,选择嵌入式开发方向。声明:博文的编写,主要参考网上资料,并结合个人见解,仅供学习、交流使用,如有侵权,请联系博主删除。...
展开
-
《嵌入式linux应用开发完全手册》核心笔记(全)
https://blog.youkuaiyun.com/sinat_36184075/article/details/71305568** 本文未附任何实例代码,基于目标板的不同操作不尽相同,网络资源针对比较成熟的开发板均可找到对应的成套实例代码【开发环境构建】1. 开发环境搭建:操作系统或虚拟机Ubuntu安装、网络服务配置、工具安装等 工具资源<云盘>:https://pan.baidu...转载 2018-04-24 11:06:27 · 597 阅读 · 0 评论 -
电容屏
电容屏的原理,某种介质(比如你的手指),和电容屏极板,构成了一个电容,至于电容是增大还是减小需要看这是自容屏还是互容屏。先感知电压AD数据,后上传,最后应用接受这个上传的数据进行处理。其实,手指皮就相当于极板,而电容屏也是极板,手指皮触发了触摸屏的电压。...原创 2018-05-18 20:40:18 · 719 阅读 · 0 评论 -
source insight的查找功能详解
http://blog.youkuaiyun.com/xiaoaid01/article/details/37876523http://bbs.youkuaiyun.com/topics/330208990https://blog.youkuaiyun.com/jeffasd/article/details/75271320sourceinsight是一款很好的代码阅读编辑工具,方便对project管理,方便程序的阅读和编辑。查找功...转载 2018-04-29 09:47:47 · 5696 阅读 · 1 评论 -
什么是DMA
DMA(Direct Memory Access),即直接存储器存取,是一种快速传送数据的机制。数据传递可以从适配卡到内存,从内存到适配卡或从一段内存到另一段内存。 利用它进行数据传送时不需要CPU的参与。每台电脑主机板上都有DMA控制器,通常计算机对其编程,并用一个适配器上的ROM(如软盘驱动控制器上的ROM)来储存程序,这些程序控制DMA传送数据。一旦控制器初始化完成,数据开始传送,DM...转载 2018-04-29 13:55:53 · 31591 阅读 · 1 评论 -
Linux下多窗口分屏式终端--Terminator
sudoapt-get update sudo apt-get install terminator 如果你要移除Terminator,卸载命令:sudo apt-get remove terminator 安装完成后按 ctrl+alt+t,就会运行Terminator窗口KEYBINDINGS The following keybindings can be used to control T...转载 2018-06-03 20:59:30 · 4908 阅读 · 5 评论 -
几个串口协议学习整理 UART IIC SPI
https://www.cnblogs.com/chengqi521/p/7238269.htmlhttps://blog.youkuaiyun.com/morixinguan/article/details/78495494一、UARTUART是一个大家族,其包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线标准规范。它们的主要区别在于其各自的电平范围不相同。嵌入式设备中常...转载 2018-05-16 20:26:45 · 6475 阅读 · 0 评论 -
/dev/tty /dev/ttyS0 /dev/tty0区别
http://blog.chinaunix.net/uid-26696487-id-3207777.html/dev/tty /dev/ttyS0 /dev/tty0区别1、串行端口终端(/dev/ttySn) 串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。有段时间这些串行端口设备通常被称为终端设备,因为 ...转载 2018-05-24 14:41:54 · 3736 阅读 · 0 评论 -
Linux I/O复用之select函数详解
https://blog.youkuaiyun.com/y396397735/article/details/55004775select函数的功能和调用顺序使用select函数时统一监视多个文件描述符的: 1、 是否存在套接字接收数据? 2、 无需阻塞传输数据的套接字有哪些? 3、 哪些套接字发生了异常?select函数调用过程: 由上图知,调用select函数需要一些准备工作,调用后还需要查看结果。设置...转载 2018-05-24 16:28:00 · 200 阅读 · 0 评论 -
嵌入式系统开发必读经典书目
https://blog.youkuaiyun.com/s110500617/article/details/51873835 读本科的时候就对嵌入式系统感兴趣,虽然在校的时候积累了大量材料,但是在较长的时间里都没有机会细读,这学期终于静下心来,系统学习一遍,期间把以前积累的各类教材或粗粗浏览或仔细揣摩,都翻了个遍,最终给出如下书单,供读者学习参考(红色字体代表强烈推荐书目):1、针对入门级的教材:推荐高等教...转载 2018-05-24 18:06:11 · 3563 阅读 · 0 评论 -
启动ICache可以加快Bootloader启动
启动CPU里的ICache可以加快Bootloader启动。 PS:SDRAM红色椭圆区域 表示 要执行的代码(几条指令)。 CPU要在SDRAM那段代码,取指令,取完之后,返回CPU内部执行。然后又跳到SDRAM那段代码,取一条指令,然后又返回CPU内部执行… … … … CPU每次都要去SDRAM里,在SDRAM红色椭圆区里取一条指令,返回执行。CPU每执行一条指令,都要访问...原创 2018-04-26 20:23:07 · 700 阅读 · 0 评论 -
并发,同步,异步,互斥,阻塞,非阻塞的理解(重要)
https://blog.youkuaiyun.com/it_lover_/article/details/52154591并发(concurrency):在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。其中两种并发关系分别是同步和互斥。所谓互斥,是指分布在不同进程之间的若干程序片断,当某个进程运行其中一个程序片段时,其它进程就不能运行它们之中的任...转载 2018-05-17 17:04:48 · 1002 阅读 · 0 评论 -
缓冲I/O与非缓冲I/O(fopen与open系列函数区别) 系统调用与C库
在程序中,对于文件的读写,程序运行时间主要消耗在I/O上。与读写内存相比,读写硬盘上的文件慢很多;每次读取/写入文件的内容很少的话,那么程序运行时间主要消耗在I/O上了。因此有了缓冲I/O和非缓冲I/O。非缓冲I/O,每次对于文件的操作,都要进行I/O操作。例如Linux的系统调用:open, read, write, lseek, close。它们依赖操作系统,没有文件结构体指针(把文件当做二进...原创 2018-04-19 20:55:43 · 508 阅读 · 0 评论 -
程序代码从Flash复制到SDRAM(Nor启动和Nand启动)
程序代码从Flash复制到SDRAM1、先分辨是Nor Flash启动还是Nand Flash启动。 巧妙利用Nor Flash的特点:Nor Flash,它可以像内存一样读,但不能像内存一样写。 访问0地址,可不可以写?Nor 启动:不能简单的写;Nand 启动:0地址是4K RAM内存,内存可以写。2、然后用某些函数把程序(bootloader)复制到链接地址来。boot.lds(...原创 2018-04-24 15:46:04 · 2375 阅读 · 1 评论 -
嵌入式linux,加载驱动程序后,运行程序导致系统奔溃
设备的写缓冲存只有100字节,但应用程序要写入4096字节,如果考虑不周全,很可能在写驱动缓存时越界,导致系统奔溃。test.c(应用程序,用户)demo1.c(驱动程序,内核)★★★如果把copy_from_user(info,buf,count)改写为copy_from_user(info,buf,size),会导致系统奔溃。重启虚拟机后:★★★系统奔溃,重启虚拟机后,在/dev目录下所建立的...原创 2018-05-02 11:41:02 · 993 阅读 · 0 评论 -
ARM开发板挂载 U盘 和 SD 卡
1、将U盘插上开发板,会弹出以下信息:查看/dev目录,会多出sda和sda1,这是你的U盘的设置文件,cd /devls -l | grep sda2、查看U盘信息fdisk -l3、挂在U盘:mount /dev/sda1 /mnt3、卸载U盘:(要进入非/mnt的目录下)umount /mnt...原创 2018-05-09 10:20:55 · 1852 阅读 · 0 评论 -
zImage和uImage的区别
uImage=64字节的头部+zImage各种文件的意义:vmlinux 编译出来的最原始的内核文件,未压缩。zImage 是vmlinux经过gzip压缩后的文件。bzImage bz表示“big zImage”,不是用bzip2压缩的。两者的不同之处在于,zImage解压缩内核到低端内存(第一个640K),bzImage解压缩内核到高端内存(1M以上)。如果内核比较小,那么采用zImag...转载 2018-04-24 19:43:23 · 262 阅读 · 0 评论 -
U-boot给Kernel传参数
约定俗称tag标记(参数)。在u-boot-1.1.6\include\asm-avr32\setup.h文件中struct tag { struct tag_header hdr; //结构体 union { //联合体 struct tag_core core; struct tag_mem_range mem_range; struct tag_cmdline c...原创 2018-04-25 14:55:35 · 316 阅读 · 0 评论 -
标准C的标记化结构初始化语法
标准C的标记化结构初始化语法以前在看Linux代码时,就对它的结构体初始化写法感到奇怪,所有的初始化代码都写清了变量名,并且变量名前面还有一个诡异的点。最近学习Linux设备驱动,又遇到了,就查了一下,发现自己的知识果然纰漏不少,此种初始化写法并不是什么特殊的代码风格,而是所谓的C语言标记化结构初始化语法(designated initializer),而且还是一个ISO标准。[cpp] view...转载 2018-04-21 14:55:00 · 283 阅读 · 0 评论 -
一个命令永久禁用Win10驱动程序强制签名
https://www.ithome.com/html/win10/196402.htm在Win10中,未经签名的驱动程序不能使用,这会导致部分硬件出现问题,此时就需要手动关闭Windows10的默认驱动验证。好在这个永久关闭验证的方法很简单,只需一个命令就可以搞定。▲要关闭强制验证只需执行第一个命令步骤如下:1、在开始按钮点击右键,选择“命令提示符(管理员)”2、执行以下命令(复制后,在命令提示...原创 2018-04-26 14:50:05 · 67616 阅读 · 10 评论 -
移植tslib时,发生错误:./autogen.sh: 4: autoreconf: not found
./autogen.sh: 4: autoreconf: not found是不同版本的tslib下执行 autogen.sh产生。它们产生的原因一样:是因为没有安装automake工具, (ubuntu 16.04)用下面的命令安装好就ok了。sudo apt-get install autoconf automake libtool...原创 2018-06-21 17:03:02 · 336 阅读 · 0 评论 -
make uImage 生成的是zImage而不是uImage
make uImage 在 linux-2.6.22.6/arc/arm/boot 目录下生成的是zImage而不是uImage解决办法:使用命令:sudo apt-get install u-boot-tools然后就可以了。(没有拷贝mkconfig文件)http://www.100ask.org/bbs/forum.php?mod=viewthread&tid=20971&h...原创 2018-06-07 13:21:05 · 820 阅读 · 0 评论 -
nfs:server is not responding, still trying(NFS,不能从服务器读取,mount的问题)
https://blog.youkuaiyun.com/ghostyu/article/details/7294543问题描述:我使用目标机挂在nfs后,读写较大的文件就会出现server is not responding, still trying问题,google了一下,有人是这么解决的,如下********************************************************...转载 2018-06-07 20:56:52 · 2843 阅读 · 0 评论 -
tslib安装以及使用
1.先在网上下载 tslib-1.4.tar.gz压缩包2.然后在ubuntu编译:tar xzf tslib-1.4.tar.gzcd tslib./autogen.sh mkdir tmp //创建安装目录echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache ...原创 2018-06-25 21:18:23 · 10295 阅读 · 0 评论 -
Linux的kobject机制
https://blog.youkuaiyun.com/younger_china/article/details/11180385作者:Younger Liu,本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。 sysfs文件系统下的每个目录对应于一个kobj,kset是kobj的封装,内嵌了一个kobj,其代表kset自身,ktype代表属性操作集,但由于通用性,因...转载 2018-07-01 12:58:36 · 643 阅读 · 0 评论 -
硬盘的存储原理和内部架构
https://blog.youkuaiyun.com/yehenhei/article/details/53033995刚看到一篇好文章,摘下来首先,让我们看一下硬盘的发展史:1956年9月13日,IBM的IBM 350 RAMAC(Random Access Method of Accounting and Control)是现代硬盘的雏形,整个硬盘需要50个直径为24英寸表面涂有磁浆的盘片,它相当于两个...转载 2018-07-06 08:24:31 · 1068 阅读 · 0 评论 -
Linux内核编程初探:块设备驱动程序——Ramdisk
https://blog.youkuaiyun.com/my_xxh/article/details/48785667第一个步骤: 编写hello world驱动程序 (1) 构造内核源码树 (2) 到hello.c文件目录下执行make,生成hello.ko文件以及其他相关文件 (3) 执行sudo insmod ./hello.ko加载模块 (4)执行Is...转载 2018-07-06 15:19:18 · 836 阅读 · 0 评论 -
浅论各种调试接口(SWD、JTAG、Jlink、Ulink、STlink)的区别
https://blog.youkuaiyun.com/LEON1741/article/details/72846434搞嵌入式开发和ARM开发搞了半辈子了,调试程序是不可避免的。接触了那么多的调试规范、调试工具、调试手段,彼此之间的关系却也不是特别清楚,今天就来捋一捋:JTAG协议JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容...转载 2018-07-06 20:14:02 · 722 阅读 · 0 评论 -
USB驱动——描述符、URB、管道
https://blog.youkuaiyun.com/lizuobin2/article/details/51953702USB传输数据时,就是打包成urb结构体来传输如下图,在这棵树里,我们把树根比作主机控制器,树叶比作具体的USB设备,树干与树枝就是USB总线。树叶本身与树枝通过usb_driver连接,而树叶本书的驱动(读写、控制)则需要通过其树叶设备本身所属类设备驱动来完成。树根和树叶的“通...转载 2018-07-14 16:08:29 · 663 阅读 · 0 评论 -
为什么中断处理函数不能添加sleep()函数?
中断处理的时候,不应该发生进程切换,因为在中断上下文中,唯一能打断当前中断处理函数handler的只有更高优先级的中断,它不会被进程打断(这点对于softirq,tasklet也一样,因此这些bottom half也不能休眠),如果在中断上下文中休眠,则没有办法唤醒它,因为所有的wake_up_xxx都是针对某个进程而言的,而在中断上下文中,没有进程的概念,没有相应的task_struct(这点对...原创 2018-08-03 06:18:25 · 3211 阅读 · 0 评论 -
ifconfig中lo、eth0、br0接口
https://blog.youkuaiyun.com/u012336923/article/details/50463599ifconfig中lo、eth0、br0、wlan0接口ifconfig中lo、eth0、br0、wlan0接口lo 回环接口eth0 以太网接口br0 网桥接口wlan0 无线接口lo 回环接口lo Link encap:Local Loopback...转载 2018-08-08 08:00:48 · 728 阅读 · 0 评论 -
tslib移植出现的小问题
https://blog.youkuaiyun.com/xiaoyangger/article/details/53699611. 编译:$export CC=/work/ebook/arm-linux-4.1.1/bin/arm-linux-gcc //toolchain路径$./autogen.sh //生成config文件$export PATH=$PATH:/work/ebook/arm...转载 2018-06-25 20:56:42 · 2314 阅读 · 0 评论 -
Linux-hexdump命令调试event驱动(详解)
hexdump:查看文件的内容,比如二进制文件中包含的某些字符串,通常用来调试用描述:我们以event1为例子,当我们insmod挂载了键盘驱动后,出现一个event1设备,此时没有按键按下,所以event1里面的数据是没有的,那么数据又是从哪里来的呢?通过键盘驱动的read函数,若有按键按下,就会上传按键数据给用户层的hexdump因为键盘驱动的input_handler是:evdev_hand...原创 2018-06-25 20:49:30 · 1672 阅读 · 0 评论 -
在uboot界面,使用tftp传文件到开发板
在学习LCD驱动之测试时,跟着视频使用NFS来上传uImage,发现不是很稳定。可以使用tftp来上传uImage,命令:tftp 30000000 uImage。30000000是SDRAM地址。原创 2018-06-07 18:09:14 · 923 阅读 · 0 评论 -
浅析linux内核内存管理之内存池
https://blog.youkuaiyun.com/hsly_support/article/details/7551900内存池(memory pool)是linux 2.6的一个新特性。内核中有些地方的内存分配是不允许失败的。为了确保这种情况下的成功分配,内核开发者建立了一种称为内存池的抽象。内存池其实就是某种形式的后备高速缓存,它试图始终保存空闲的内存,以便在紧急状态下使用。下边是内存池对象的类型:...转载 2018-06-23 15:43:02 · 984 阅读 · 0 评论 -
【网络编程】 一张图了解TCP/IP协议
TCP/IP协议如下:转载 2018-06-08 21:16:56 · 501 阅读 · 0 评论 -
get_free_page分配大块内存空间
https://blog.youkuaiyun.com/wzc18743083828/article/details/18549939?locationNum=10&fps=1分配页内存的函数们:unsigned long get_zeroed_page(unsigned int flags);******分配一页内存,返回一个指向新页的指针并且对该页进行了清零操作unsigned long __ge...转载 2018-06-23 21:14:17 · 1758 阅读 · 0 评论 -
Linux内存管理内核API函数alloc_pages( )
http://blog.163.com/chujb_chen/blog/static/10571112013392331217/函数功能描述: alloc_pages( )函数以gfp_mask分配方式分配2的order次方(1<<order)个连续的物理页。 输入参数说明: gfp_mask: 是分配标志,内核分配内存有多种方式,该参数告诉内核如何分配以及在哪...转载 2018-06-24 15:24:59 · 4569 阅读 · 0 评论 -
LINUX内核内存管理kmalloc,vmalloc
https://blog.youkuaiyun.com/wh8_2011/article/details/52946974一.kmalloc与vmallco 在设备驱动程序或者内核模块中动态开辟内存,不是用malloc,而是kmalloc ,vmalloc,释放内存用的是kfree,vfree,kmalloc函数返回的是虚拟地址(线性地址). kmalloc特殊之处在于它分配的内存是物理上连续的,这对于...转载 2018-06-24 16:21:24 · 725 阅读 · 0 评论 -
廖威雄: 学习Linux必备的硬件基础一网打尽
作者简介: 廖威雄,目前就职于珠海全志科技股份有限公司从事linux嵌入式系统(Tina Linux)的开发,主要负责文件系统和存储的开发和维护,兼顾linux测试系统的设计和持续集成的维护。 拆书帮珠海百岛分舵的组织长老,二级拆书家,热爱学习,热爱分享。内容简介:出来混,迟早要还的.....本文详细论述大学时候的基本功,MMU,CACHE, TLB, Page Fault, 进程切...转载 2018-06-24 18:42:20 · 423 阅读 · 0 评论 -
kobject和kset的一些学习心得
http://www.fx114.net/qa-95-91028.aspx本篇文章主要介绍了"kobject和kset的一些学习心得 ",主要涉及到kobject和kset的一些学习心得 方面的内容,对于kobject和kset的一些学习心得 感兴趣的同学可以参考一下。 #include <linux/module.h> #include <linux/kernel.h>...转载 2018-06-30 15:25:56 · 228 阅读 · 0 评论