
嵌入式
SuJFighting
技术的突飞猛进往往是自然发生的。 你在某个夜晚苦熬一个知识点时, 不会觉得自己突飞猛进; 只有在多年后的某日,灵光乍现,用这个技术解决了问题, 内心才会小小地波动一下, 猛然忆起当年深夜中的青灯一盏。
展开
-
移植capwap到tiny6410上
make的时候用的交叉编译环境是arm-linux-gcc-4.5.1 make的时候出现gnu_getopt.o: Relocations in generic ELF (EM: 3)错误提示。原因:由于这个capwap工程之前使用gcc编译过x86版本的,然后修改configure 的编译选项开始编译arm-linux版本,会造成有x86的文件遗留,使用make clean原创 2014-12-07 23:03:25 · 2122 阅读 · 0 评论 -
等待队列与工作队列实例
demo.c:#include #include #include #include #include #include #include #include #include #include "demo.h"MODULE_AUTHOR("fgj");MODULE_LICENSE("Dual BSD/GPL");struct simple_dev原创 2012-10-11 10:36:50 · 1872 阅读 · 0 评论 -
内核定时器
内核如果要在将来的某个规定的时刻运行一段程序或进程就要用到内核定时器,内核定时器是一种软件定时器,linux内核使用结构体struct timer_list{ struct list_head list; unsigned long expires;//定时器到期时间 unsigned long data;//作为参数被传入定时原创 2012-10-09 21:30:45 · 481 阅读 · 0 评论 -
静态局部变量
静态局部变量:对于静态局部变量,系统在程序开始的执行时为这种变量分配存储空间,当调用函数并执行函数体后,系统并不收回这些变量所占用的存储空间,当再次调用函数时,变量仍使用原来分配的存储空间,因此这种仍会保留上一次函数调结束时的值。说明:1、定义静态局部变量时,若没有明确地赋初值,则编译时系统自动赋以初值0(对数值类型),对于字符变量就赋空字符'\0'。 2、虽然静原创 2012-10-11 09:26:00 · 598 阅读 · 0 评论 -
Linux系统编译boa-0.94-13出错信息问题
Linux系统编译boa-0.94-13出错信息问题,阅读Linux系统编译boa-0.94-13出错信息问题,编译一个linux下的c系统,包含词法和语法分析模块,Linux上用bison和flex。 yacc是一个文法分析器的生成器,bison即是yacc的GNU版本.Lex和YACC是用于构造词法分析机和语法解释 编译一个linux下的c系统,包含词法和语法分析模块,Linux上用b转载 2012-10-05 19:55:49 · 1185 阅读 · 0 评论 -
poll函数分析实例
poll函数用于监测多个等待事件,若事件未发生,进程睡眠,放弃CPU控制权,若监测的任何一个事件发生,poll将唤醒睡眠的进程,并判断是什么等待事件发生,执行相应的操作。poll函数退出后,struct pollfd变量的所有值被清零,需要重新设置。示例是使用poll函数来监测按键的输入------------------------------------------------转载 2012-10-04 21:42:13 · 937 阅读 · 0 评论 -
linux内核启动流程
ARM-Linux内核移植之(一)——内核启动流程分析K-Style 转载请注明来自于衡阳师范学院08电2 K-Style http://blog.youkuaiyun.com/ayangke,QQ:843308498 邮箱:yangkeemail@qq.com 内核版本:2.6.22 为什么要采用这样一个较低的版本进行移植了,因为韦东山大牛说了,低版本的才能学到东西,转载 2012-10-05 10:14:47 · 950 阅读 · 0 评论 -
platform总线架构
Linux驱动下的platform总线架构 从 Linux 2.6 内核起,引入一套新的驱动管理和注册机制:platform_device和 platform_driver 。Linux 中大部分的设备驱动,都可以使用这套机制,设备用 platform_device表示;驱动用 platform_driver 进行注册。 Linux platform driver转载 2012-10-05 09:44:51 · 1691 阅读 · 0 评论 -
Android 修改系统文件夹权限
修改系统文件夹的权限比较简单,执行几个简单的命令行即可,如下:进入“运行——>输入cmd”具体操作:lixinso@lixinso-desktop:~$ adb devices List of devices attached emulator-5554 devicelixinso@lixinso-desktop:~$ adb shell #转载 2012-08-25 15:43:29 · 2916 阅读 · 0 评论 -
Android4.0Sd卡移植之使用vold自动挂载sd卡
Android4.0Sd卡移植之使用vold自动挂载sd卡 在cap631平台上移植android4.0,发现内核驱动没有任何问题,能够读写,当总不能挂载。后来发现是因为自动挂载需要vold的支持。vold程序负责检查内核的 sysfs 文件系统,发现有SD卡插入后,自动挂载。 在文件系统目录 /system/etc/ 下有一个vold.fstab 文件,该文件是系统与用户硬件平台的原创 2012-08-25 18:44:49 · 9002 阅读 · 1 评论 -
牛人blog链接
内存工作原理摘要: 专家详解:内存工作原理及发展历程 -专家详解:内存工作原理及发展历程-西域IT网nhttp://www.xiyuit.com/memory/2/24714.html牛人blog链接摘要: http://blog.chinaunix.net/u1/34474/showart.php?id=404278转载 2012-08-01 22:12:08 · 842 阅读 · 0 评论 -
tiny6410按键platform(平台)驱动的实现
tiny6410中的按键驱动没有提供按键的platform驱动,于是闲来无事把/drivers/char/mini6410_buttons.c给移植成platform驱动,下面是整个的移植过程: 1.首先在 /arch/arm/mach-s3c64xx 目录下添加我们的按键device,文件名定为dev-buttons.c,其源码为:#include #include #inc原创 2012-09-14 13:55:27 · 2195 阅读 · 0 评论 -
mmap系统调用(内核空间到用户空间的映射)
linux中内核空间到用户空间的地址映射让用户层应用可以直接访问内核地址,这就是mmap方法,内核的mmap函数是file_operations中的成员,struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (stru原创 2012-10-12 20:49:07 · 6558 阅读 · 0 评论 -
Linux内核中内存相关的操作函数
1、kmalloc()/kfree() static __always_inline void *kmalloc(size_t size, gfp_t flags) 内核空间申请指定大小的内存区域,返回内核空间虚拟地址。在函数实现中,如果申请的内存空间较大的话,会从buddy系统申请若干内存页面,如果申请的内存空间大小较小的话,会从slab系统中申请内存空间。 gfp_t f转载 2012-10-12 21:02:41 · 980 阅读 · 0 评论 -
深度分析DHCP relay和snooping功能
转自:http://blog.sina.com.cn/s/blog_866d4e0501016vxh.html一、DHCP relay首先分析一下DHCPrelay是什么协议。在使用DHCP协议,客户机可以向DHCP服务器动态的请求配置信息,包括分配的IP地址,子网掩码,缺省网关等信息。由于DHCP请求报文以广播方式进行的,这种类型报文的转发局限于一个网段内,不可以转载 2015-01-14 14:31:49 · 13241 阅读 · 0 评论 -
用c语言写动态库
1. 用c语言写动态库:#include "stdio.h"#include "stdlib.h"#include "stdarg.h"//宏--如果定义c++;这里用来为c++加载c函数 ,以下是详细解释:时常在cpp的代码之中看到这样的代码:#ifdef __cplusplusextern "C" {#endif//一段代码#ifdef __cplusp转载 2015-01-14 11:40:43 · 714 阅读 · 0 评论 -
gcc生成静态库和动态库
http://blog.youkuaiyun.com/ast_224/article/details/3988244 gcc生成静态库和动态库一、库文件简介简单地说,库(Library)就是一组已经写好了的函数和变量、经过编译代码,是为了能够提高开发效率和运行效率而设计的。库分为静态库(Static Library)和共享库(Shared library)两类。静态转载 2014-12-09 00:27:32 · 511 阅读 · 0 评论 -
mac和phy的关系
http://blog.youkuaiyun.com/suiyuan19840208/article/details/7815929嵌入式系统,一般CPU都会有一个或者几个MAC控制器,用来处理MAC的数据,但是只有MAC并不能网络数据的收发。必须通过MII接口外接一个物理层的OHY芯片。下面时我从网络找到的一些关于MAC和PHY相关的信息。 MII (Media In转载 2014-01-24 15:53:24 · 1803 阅读 · 0 评论 -
ubuntu:/opt/ecos/ecos-3.0/tools/bin# ./ecosconfig ./ecosconfig: error while loading shared lib
解决:sudo apt-get install libstdc++5原创 2013-09-10 16:51:48 · 1184 阅读 · 0 评论 -
bootloader之U-boot
bootloader简介:bootloader是引导os启动的一段小程序,它被放在地址为0x00000000的flash处,当硬件加电后启动时就会去执行这段程序,完成硬件的初始化工作,并建立内存空间的映射图,从而为os启动做准备工作。bootloader流程:分单阶段和多阶段:通常是多阶段:多阶段:stage1:完成初始化硬件,为stage2准备内存空间,并把stage2需原创 2012-09-26 14:33:03 · 1829 阅读 · 0 评论 -
对__iomem的理解
__iomem是linux2.6.9内核中加入的特性。是用来个表示指针是指向一个I/O的内存空间。主要是为了驱动程序的通用性考虑。由于不同的CPU体系结构对I/O空间的表示可能不同。当使用__iomem时,编译器会忽略对变量的检查(因为用的是void __iomem)。若要对它进行检查,当__iomem的指针和正常的指针混用时,就会发出一些警告。转载 2012-09-25 20:03:27 · 933 阅读 · 0 评论 -
嵌入式linux系统构成
嵌入式linux文件系统 一个典型的嵌入式linux系统按照存储空间通常包括引导区、内核区、文件系统区。引导区存放bootloader和内核参数;内核区存放特定嵌入式平台的定制linux内核;文件系统区包括根文件系统和建立于flash内核设备之上的文件系统。图形界面系统和用户应用程序就放在文件系统区中。Bootloader占用的空间一般比较小,它后面紧接着启动参数区,用来保原创 2012-09-25 10:21:14 · 1108 阅读 · 0 评论 -
linux内核链表
linux内核中的链表为双向链表,双向链表可以从两个方向遍历。struct list_head{ struct list_head *next,*prev;}这个结构实现了链表的通用性,不过依赖于链表中data的具体结构。 一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。转载 2012-10-13 19:48:40 · 537 阅读 · 0 评论 -
s3c2410_gpio_cfgpin等内核导出函数
1.S3C2410_GPB5是端口编号,定义在regs-gpio.h中,#define S3C2410_GPIO_BANKB (32*1)#define S3C2410_GPIONO(bank,offset) ((bank) + (offset))#define S3C2410_GPB5 S3C2410_GPIONO(S3C2410_GPIO_BANKB, 5)转载 2012-09-22 15:21:36 · 4680 阅读 · 1 评论 -
缺省配置文件配置和编译内核
找到linux内核位置/opt/Friendlyarms/mini2440/linux-2.6.32.2,进入linux-2.6.32.3 命令cp config_mini2440_t35 .config配置缺省文件config_t35配置 命令make menuconfig进入图形界面,不用配置内核直接选择exit退出,目的为生成相应的头文件 命令make zIm转载 2012-08-12 17:04:35 · 1768 阅读 · 0 评论 -
写驱动时交叉编译之makefile编写模板(tiny6410)
ifneq ($(KERNELRELEASE),) obj-m := mini6410_leds.oelse KERNELDIR := /opt/FriendlyARM/mini6410/linux/linux-2.6.38PWD:=$(shell pwd) all: make -C $(KERNELDIR) M=$(PWD) modules原创 2012-08-12 16:47:52 · 1644 阅读 · 0 评论 -
内核linux之等待队列
相信很多写程序的人都写过 socket 的程序。当我们 open 一个 socket 之后,接着去读取这个 socket,如果此时没有任何资料可供读取,那 read 就会 block 住。(这是没有加上 O_NONBLOCK 的情形),直到有资料可读取才会传回来。在 Linux kernel 里有一个数据结构可以帮助我们做到这样的功能。这个数据结构就是这里要跟各位介绍的 wait queue。在转载 2012-08-12 20:47:00 · 723 阅读 · 0 评论 -
linux内核编译中的各种问题:No rule to make target `menuconfig'&&Unable to find the Ncurses libraries
problem 1:首先要注意一定要在解压的Linux内核中执行 make menuconfig,一般在/usr/src/目录下,否则会出现 No rule to make target `menuconfig'. 的提示problem 2:解压linux-2.6.33.20.tar.bz2文件的命令为: tar -xvjf linux-2.6.33.20.tar.bz2 /usr/原创 2012-03-12 17:03:25 · 9118 阅读 · 0 评论 -
linux在单用户下修改root密码&&忘记密码
1.开机显示grup引导界面时,按e键(不知道什么是grup界面时可以当开机后就按e键,基本上就是开 机的时候) 2.选择kerner /boot/vmlinuz-2.6.23.1-42.fc8 ro root=/dev/volgroup0/LogVolRoot (跟这个差不到的就 选上) 然后按e键编辑 3.在这行的末尾加上 “空格+sigle”(即单用户模式)原创 2012-03-10 11:22:55 · 1154 阅读 · 0 评论 -
linux下安装gcc交叉编译工具及其“浮点数例外”
1.要在root用户下安装,在其他用户下可能安装不成功。2.如果安装成功后出项“浮点数例外”的情况,可能就是你的linux的 版本的问题或者虚拟机的版本问题,一般重新安装其他版本的linux系统就能解决。 如何使arm-linux-gcc在任何目录下都可用: 当前目录为/home/jun/arm$ sudo原创 2012-03-10 11:06:49 · 2807 阅读 · 0 评论 -
无病呻吟也是一种情趣!!!
书上讲得再好,重点再突出,但如果不在实际编程中遇到,有时还是不能完全理解。编程的过程就是实践的过程。人生也应多体验,多实践,哪怕出错,因为出错的时候你就又多了一次学习的机会!!原创 2012-03-01 17:45:47 · 1002 阅读 · 0 评论 -
Red hat Linux下ifconfig命令不能使用
1.最简单的办法是在terminal下输入:source /etc/profile(不过这种办法有些问题,有时候不起作用) 2. 最有效的方法,將sbin命令加入PATHexport PATH=$PATH:/sbin推荐第二种转载 2012-02-25 14:45:35 · 1896 阅读 · 1 评论 -
unbuffered I/O. buffered I/O<转载>
1. buffered I/O, 即标准I/O首先,要明确,unbuffered I/O只是相对于buffered I/O,即标准I/O来说的.而不是说unbuffered I/O读写磁盘时不用缓冲.实际上,内核是存在高速缓冲区来进行真正的磁盘读写的,不过这里要讨论的buffer跟内核中的缓冲区无关.buffered I/O的目的是什么呢?很简单,buffered I/O的目的转载 2012-02-25 10:16:34 · 1544 阅读 · 0 评论 -
windows 与Linux之间的文件传输
嵌入式Linux之我行——虚拟机中实现Linux与Windows之间的文件传输 嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。原创篇,转载请注明出处:http://hbhuanggan转载 2012-02-23 17:31:54 · 8386 阅读 · 1 评论 -
嵌入式的学习
最近很多朋友都在问,如何学习嵌入式,作为嵌入式的老鸟,我想我可以做一些唠叨,嵌入式的入门门槛稍微高一点,但是再高的城墙也是小砖头筑起来的,所以没有必要因为门槛高就觉得很困难,一步一个脚印,贵在坚持就可以了。 学习嵌入式,该学习什么基本的知识呢? 首先C语言,这个是毋庸置疑的,不管是做嵌入式软件还是硬件开发的人员,对C语言的掌握这个是必需的,特别是对于以后致力于嵌入式软件开发的人转载 2012-02-24 13:38:14 · 808 阅读 · 0 评论 -
Cygwin 的安装
对于 UNIX 本身,也有各种称呼。IBM? 大型机用户说各种带字母 “z” 的行话,比如 IBM z/OS? 和 System z9 Virt l Machine (z/VM);嵌套系统开发人员使用 eCos 这个词;在聊天中还会提到其他许多风格的 UNIX,比如 Linux?、FreeBSD、Sun Solaris 和 Mac OS X。现代信息技术使用各种各样的方言,简直就像是圣经中巴别塔的转载 2012-02-22 17:09:10 · 747 阅读 · 0 评论 -
Cygwin中VIM的设置 backspace 不能用
vim中退格键的使用(此文转自网络)1.安装了cygwin,但发现vim编辑模式下退格键backspace不能用,非常不方便。原来vim缺省是vi兼容模式,设置成不兼容模式就好了::set nocp可以用help查看相关的设置。:help cp:help compatible2.打开一个已存在的文件后,文件中的字符,不能用backspace键删除。但是此时如转载 2012-02-22 20:15:59 · 3989 阅读 · 0 评论 -
Ubuntu如何进root
1、先解除root锁定,为root用户设置密码打开终端输入:sudo passwd(输入你当前用户的密码)Enter new UNIX password( 新的Root用户密码)Retype newUNIX password(重复新的Root用户密码passwd),已成功更新密码2、更改登陆,允许root登录打开 系统>系统管理>登录窗口)点“安全”选项页,选择“允许本地管理员登录”。转载 2012-03-24 15:47:23 · 798 阅读 · 0 评论 -
undefided reference to 'sem_init' 等信号量问题
解决办法:在编译时加上 -pthread,eg: gcc -pthread sem.c -o sem #include#include#includestatic int shared = 0;static sem_t sharedsem;int initshared(int val){ if(sem_init(&sharedsem,0,1原创 2012-04-20 17:36:37 · 977 阅读 · 0 评论 -
微机原理的中断学习
中断实际上是对以前的CPU轮询外设的方法的改进,轮询方式需要CPU不断的向外设访问来查看外设的状态,这样CPU不能做其他的事,造成CPU的资源的浪费。而中断通过硬件实现了CPU与外设的数据交换。当外设的状态准备好能供CPU使用的时候,就向CPU发送一个请求。 一句话:中断的实现变CPU主动为外设主动。原创 2012-05-10 14:29:54 · 1040 阅读 · 0 评论