嵌入式笔记
文章平均质量分 86
kindlyde
学习,学而习之。
展开
-
Eclipse集成开发环境---第三季 专题1 课程5
Eclipase 集成开发环境集成---1.在线调试 2.编译 硬件连接 - 安装GDB SERVER 3.jlink软件安装(未焊接jlink转接板)整体连接方式:eclipse--gdb server--(usb)--jlink-开发板原创 2014-09-05 22:20:57 · 959 阅读 · 0 评论 -
fork与vfork、exec与system
比较fork与vfork之间的区别:都为创建一个子进程,1、前者是将父进程的内存数据copy到子进程中,而后者则是共用父进程的内存数据2、vfork:创建过子进程之后,阻塞父进程,当子进程调用exit()或者exec()后父进程开始往下运行。。注:vfork返回只能调用exit而不能使用return,,因为子进程与父进程共享一片内存,子进程return之后,释放局部变量、弹出 栈,原创 2015-01-17 17:11:15 · 1132 阅读 · 0 评论 -
uboot入门 | 使用 | 学习
1、编译uboot1.1(OK6410开发板)执行命令 make forlinx_nand_ram256_config以下为各个开发板编译uboot的对应命令TQ210: make TQ210_configSmart210: make smart210_configOK210: make forlinx_linux_configOK6410原创 2015-02-05 17:37:21 · 2281 阅读 · 0 评论 -
tftp网络协议实现
分析:tftp包属于UDP包;UDP包属于IP包;IP包属于以太网包,由ARP章节知以太网包内包含目的MAC地址,但客户端在发送tftp请求包之前需要知道服务器的mac地址,所以应该先发送ARP请求包,知道服务器的Mac地址之后再进行tftp传输。由于DM9000接收的包类型可能不同:既可能是ARP的包,又可能是IP包。所以需要对不同类型的包进行不同的处理。这一点体现在中断里对他们的不原创 2015-01-17 16:22:29 · 1181 阅读 · 0 评论 -
bootm命令移植
bootloader的作用:1、初始化软硬件(CPU\板载、堆、栈) 2、启动OSbootm :uboot中负责启动系统的命令。uimage与zimage的区别: uimage相对于zimage有一个信息头,信息头中包含着启动系统的信息(系统类型)、如何压缩、幻数分析do_bootm函数中:主要工作:1、获取内核文件头、2、判断加载的文件是应原创 2015-01-17 16:37:57 · 740 阅读 · 0 评论 -
Linux内核驱动学习(二)----根文件系统的构成 (root filesystem)
1、建立根文件系统目录和文件1.1创建目录1.2创建设备文件(命令mknod);必须创建设备文件---consle\null1.3创建配置文件---复制已有的/etc目录下的文件1.4添加内核模块进入上节Linux内核目录下,(注意,应该先编译内核,即命令make uImage ARCH=arm CROSS_COMPILE=arm-原创 2015-02-05 19:32:58 · 2252 阅读 · 0 评论 -
tftp服务器配置及协议分析
tftp作用:使用宿主机上的TFTP服务器下载文件到开发板的tftp客户端。tftp服务器配置:1、安装tftp的RPM包,tftp包依赖xinted软件,则先安装xinetd.2、配置、/etc/xinetd.d/tftp 文件,使能tftp,更改服务器主目录3、重启tftp服务/etc/init.d/xinetd restart原创 2015-01-17 16:15:49 · 1251 阅读 · 0 评论 -
Linux内核驱动学习(五)----进程管理子系统
摘要:本文主要讲述Linux进程的要素、Linux进程的调度1、Linux进程的要素1.1程序与进程程序:存放在磁盘上的一系列代码和数据的可执行映像,是一个静止的实体。。进程:是一个正在执行的程序,它是动态的实体1.2进程的四要素-->《Linux情景分析》1.2.1-->有一段程序供其执行,这段程序不一定是某个进程所专有,可以与其他进程共用1.2.2-->有进程专用的内核空间堆栈。1.2.3-->在内核中有一个原创 2015-02-09 21:44:47 · 1397 阅读 · 0 评论 -
Linux内核驱动学习(四)----内存管理子系统
摘要:本文主要讲述Linux对内存的管理,主要涉及Linux虚拟地址空间的分布、虚拟地址到物理地址的映射管理,Linux物理内存的分配。原创 2015-02-09 20:32:41 · 3453 阅读 · 0 评论 -
Linux内核驱动学习(一)----内核简介 | 配置 | 编译| 安装(PC平台下)
摘要:本文主要介绍Linux体系结构、Linux内核的构成以及Linux内核的配置安装方法原创 2015-02-05 19:00:03 · 1160 阅读 · 0 评论 -
Linux驱动模型学习(一)---字符设备驱动模型之一---使用字符设备驱动
通过前面的学习,我们知道Linux内核是由大量而且复杂的代码组成的,而内核源码中又有很大一部分是各种驱动程序组成的。为了不使参与到Linux内核开发的“黑客”们不会被内核代码的复杂性淹没,设备驱动程序就是一个很好的进入Linux内核大门的入口。在接下来的一段时间里我们将要对Linux系统下的各个子系统进行归纳和学习,从而各个击破,以学习Linux下内核模块的设计和实现。那我们就先从简单的驱动程原创 2015-03-15 22:44:17 · 910 阅读 · 0 评论 -
Linux驱动模型学习(二)---字符设备驱动模型之二---初窥字符设备驱动
相信大家通过上节的了解,对字符设备也有了感性上的认识。接下来我们就要对字符设备驱动进行剖析了(基于Linux3.0.1版本内核)在Linux内核中,是使用struct cdev这个数据结构来表示字符设备的。定义在中struct cdev { struct kobject kobj; struct module *owner; const struct file原创 2015-03-18 20:50:23 · 699 阅读 · 0 评论 -
Linux内核驱动学习(六)----内核链表
摘要:本文主要叙述和介绍了Linux内核链表的数据结构,以及对操作内核链表函数的做了简要分析。原创 2015-03-06 22:23:16 · 915 阅读 · 0 评论 -
Linux内核驱动学习(三)----内核模块基础 | 设计 | 可选项
内核模块基础--特点及其命令使用1、模块本身并不被编译进内核文件(zImage或bzImage)2、可以根据需要在内核运行时动态加载、卸载----》进而达到节省空间的目的命令详解(以下载驱动DNW为例):insmod 模块名称(注意有.ko后缀)--安装insmod dnw_usb.kolsmod-->查看安装的内核模块rmmod 模块名称原创 2015-02-09 19:52:57 · 1428 阅读 · 0 评论 -
linux内核驱动学习(七)----驱动分类 | 学习方法 | 硬件访问
驱动分类:对于驱动,我们一般按两种方法进行分类:常规分类法和总线分类法。按照常规分类法,可以分为以下三类:1、字符设备:以字节为最小访问单位的设备。一般通过字符设备文件来访问字符设备驱动程序。字符驱动程序则负责驱动字符设备, ,这样的驱动通常支持open、close、read、write系统调用,应用程序可以通过设备文件(比如/dev/ttySAC0等)来访问字符设备(原创 2015-03-14 20:45:50 · 1459 阅读 · 0 评论 -
嵌入式Linux网络编程 之 简单的UDP网络编程
关于用户数据报文协议(UDP):UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。而且UDP提供的是不可靠的非连接型的传输层服务,允许在源站点和目的站点之间传送数据,而不必在传送数据之间建立连接,进而开销比较低,主要用于那些不要求TCP协议的非连接型应用程序。例如:网络管理,视频点播、网络会议...简单的数据报通原创 2015-08-24 16:29:21 · 2257 阅读 · 3 评论 -
嵌入式Linux网络编程 之 多线程聊天
题目要求:编写一个网络聊天程序,要求采用数据流的套接口编程程序分为服务端与客户端服务端最大同时连接10个客户端服务端可以响应多个客户端的请求,每个客户端直接可以相互通信,由服务器实现转发。服务器端显示所有客户端的通信客户端通过用户名实现不同用户间的通信(发送消息格式:用户名 消息内容)服务器代码:#include #include #include #incl原创 2015-08-24 17:45:32 · 2565 阅读 · 0 评论 -
嵌入式Linux网络编程 之 简单的TCP网络编程
关于TCP:TCP提供的是一种面向连接的、可靠的字节流服务。 TCP网络通信流程图补充的API函数名称:listen()原型:int listen(int sockfd, int backlog)功能 : 宣告服务器原创 2015-08-24 17:34:42 · 3825 阅读 · 3 评论 -
动态链接库
回顾使用静态链接库与动态链接库的区别:制作动态链接库 1 . gcc –c mylib. c –o mylib.o2. gcc -shared -fPIC mylib. o -o libmylib. so3. 将制作好的libmylib. so 复制到 /usr/lib-fpic 使输出 的对象模块是按照可重定位地址方式生成的。-sh原创 2015-01-17 17:04:35 · 559 阅读 · 0 评论 -
静态函数设计 ----- 系统调用与库函数的区别
Linux应用程序需要的外部函数主要由函数库和系统调用来提供。函数库又分为静态函数库和动态函数库,Linux应用程序使用的主要函数库均放于/lib,/usr/lib目录下;Linux下默认使用动态函数库静态函数库:*.a方式命名的库动态函数库:*.so.*方式命名的库RHEL默认不提供静态C函数库(libc.a)。这样的话在链接C的静态链接库或者程序在其他静态链接时用到C库原创 2015-01-17 17:01:24 · 719 阅读 · 0 评论 -
注释代码的13技巧
注释代码的13技巧本文发表在作者José M. Aguilar的博客Variable Not Found,后来由Timm Martin翻译成英文发表在DevTopics上。以下是如何注释代码的13tips,它们会在日后帮助你更容易理解和维护代码。1. Comment each level(每个级别的注释有统一的风格)注释每一个代码块,并且在各个级转载 2014-09-23 23:25:25 · 627 阅读 · 0 评论 -
下篇--ARM时钟初始化--配置时钟(基于ok6410)--国嵌第三季-专题7
6410(3个PLL-APLL、MPLL、EPLL)1、设置locktime2、设置分频系数3、设置CPU到异步工作模式4、设置FCLK原创 2014-09-15 12:51:41 · 1511 阅读 · 0 评论 -
栈的初始化及栈帧概念解析--国嵌第三季--专题10 课程1
1、栈:FILO先进后出的数据结构栈底是第一个进栈的数据的位置(压箱 底) 栈顶是最后一个进栈的数据位置2、根据SP指针指向的位置,栈可分为 满栈和空栈 满栈:当sp指针总是指向最后压入堆栈 的数据(ARM采用满栈) 空栈:当堆栈指针SP总是指向下一个将 要放入数据的空位置。 3、根据SP指针移动的方向,可分为升 栈和降栈 升栈:随数据的入栈,S原创 2014-09-25 22:16:33 · 2878 阅读 · 0 评论 -
上篇--ARM时钟初始化--了解时钟体系--国嵌第三季-专题7
一、基本概念1.1时钟脉冲信号:按一定的电压幅度 、一定时间间隔连续发出的脉冲信号 1.2时钟脉冲频率:单位时间内产生的 时钟脉冲信号个数。 1.3 信号的产生 [1]晶振 (成本较 高) [2]PLL锁相环合成器 (成本较低、且可以通过分频满足多个时钟频率的复杂系统) 二、时钟体系学习处理器的时钟体系需了解的方面:1、晶振频率 2、有多少PLL? 3、PLL提原创 2014-09-15 12:49:20 · 976 阅读 · 0 评论 -
6410中断编程
数据手册关于支持的中断源(64个)P411 由VIC0INTENABLE寄存器的每一位对应着每一个中断源,使其使能关于中断向量寄存器(VICx)汇总:P414--------------------------------------------------------------------------------------------------------向量模式的中断编程原创 2014-11-22 22:17:15 · 917 阅读 · 0 评论 -
读nandflash---根据数据手册K9GAG08U0D
nandflash的操作单位:nandflash的操作包括读、写和擦除。其寻址单位是页,读写时是以页为单位,擦除时则以块为单位。 图1: 芯片(页)读操作时序图原创 2014-11-22 22:18:54 · 1848 阅读 · 0 评论 -
调试LCD出现的错误。。
1、查看OK6410的背光使能引脚为GPF14,但将其PWM使能之后,整个屏幕不再显示任何东西。。但网上的6410资料都有将此引脚初始化。。不解。。 GPFCON &=~(0x3 GPFCON |= (1用作背光使能信号 2、上图LCD引脚:LCD的开关位:引脚31,被I2CSDA0占用。。经查飞凌论坛:得到如下结论:o原创 2014-11-22 22:53:02 · 1034 阅读 · 0 评论 -
uboot编译过程
本文基于u-boot-1.3.4,开发板fs2410,交叉编译工具路径/usr/local/arm/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux-gnu/binmake fs2410_configmake all简单的两条命令就可以编译完成。下面开始分析其详细过程,curdir为u-boot顶层目录/////////////////执行转载 2014-12-17 21:09:16 · 615 阅读 · 0 评论 -
LCD原理解析
LCD原理、时序信号解析原创 2014-12-28 14:29:24 · 993 阅读 · 0 评论 -
6410LCD显示配置
6410LCD显示寄存器配置原创 2014-12-28 14:33:01 · 1518 阅读 · 0 评论 -
电阻屏驱动设计---ok6410
触摸屏初始化1、设置AD转换时钟;1.1使能预分频 1.2设置预分频值(设置的PCLK为66HZ)1.3关闭第[2]位:静态模式设置为普通模式;否则无法进行AD转换1.4设置AD转换之间的延时,这里使用轮询的方式查看AD是否转换完成,则参考别的代码设置ADCDLY = 0xffff;2、设置中断2.1将中断处理函数写入中断向量表中对应地址(V原创 2014-12-28 15:21:27 · 1165 阅读 · 2 评论 -
网卡驱动设计--2440
注意学习软件的移植。。从uboot中找出DM9000的参考代码;先参考其初始化代码,进行了如下步骤:前两步需分析得出1、由于DM9000是一个单独的芯片,所以要设置其片选1.1设置数据位宽1.2设置其工作时序(参考uboot--初始化CPU对应目录U-Boot\arch\arm\cpu\arm920t\s3c2440\lowlevel_init.s)2、中断初始化(采用中断的方原创 2014-12-28 15:57:05 · 746 阅读 · 0 评论 -
网卡工作了解
1、网络模型--两种1.1 OSI七层模型 1.2linux--TCP/IP四层模型2、硬件支持--DM9000的结构(网原创 2014-12-28 15:50:40 · 789 阅读 · 0 评论 -
ARP协议的实现
1、需要实现的函数----发送ARP请求包 图一:ARP包格式1.1根据ARP包的格式(即图1),构造ARP请求包1.2填充ARP包的结构 -->ARP帧类型是0x0806原创 2014-12-28 16:02:47 · 2775 阅读 · 0 评论 -
Linux应用程序地址布局
Linux应用程序在内存中的地址分布:代码段(正文段):CPU执行的机器指令部分。。通常为共享的,也是只读的,以防止程序由于意外而修改其指令。初始化数据段: 通常被称为数据段,它包含了程序中需明确赋初值的变量。未初始化数据段(bss段):意为由符号开始的块(block started by symbol),在程序开始之前,内核将此段中的数据初始化为0或空指针。。栈:自动原创 2015-01-17 16:54:15 · 1177 阅读 · 0 评论 -
进程控制理论知识
程序:静态的存储在计算机上,用适当形式描述的算法。。进程:一个具有一定独立功能的程序的一次运行的活动;是正在运行程序的一个抽象。进程的三个状态:1、运行态(该时刻进程实际占用CPU)2、就绪态(可运行,但因为其他进程正在运行而暂时停止)3、阻塞态(除非某种外部事件发生,否则进程不能运行)前两种逻辑上是相似的,两种进程都可以运行,,只是因为进程调度原因。。第3种是因为原创 2015-01-17 17:08:32 · 909 阅读 · 0 评论 -
ARP了解
1、ARP协议的介绍:1.1以太网通讯在计算机网 络中 , 数据发送的过程, 就是一个把数据按照各层协议层层封装的过程。 在这个过程中 , 最终要使用 的协议通常是以太网协议( 数据链路层协议)。 以太网包格式1.2ARP功能在以太网络中, 每台计算机的唯一身份标示是MAC地址(物理层的地址)原创 2014-12-28 15:59:12 · 673 阅读 · 0 评论 -
VM虚拟机无法识别USB问题 -- 裸机开发流程 第三季 专题1 课程1
裸机开发流程1、编写裸机程序 2、调试裸机程序 3、生成2进制映像(编译、链接、格式转换) 4、烧写、运行2 进程映像 遇到裸机烧写问题:虚拟机中的USB驱动无法显示,进而无法下载裸机程序。。分析原因:【1】windows上的驱动(SEC S3C6400X Test B/D)没装好 ---原因不在这里,,因为windows的驱动无法安装仅仅代表 wi原创 2014-08-06 11:42:17 · 1735 阅读 · 0 评论