- 博客(144)
- 资源 (6)
- 收藏
- 关注
原创 内核缓冲区应用
#include #define FIFO_SIZE (1024)typedef struct tagS_FIFO{ unsigned int ulSize; unsigned int ulIn; unsigned int ulOut; char *pBuf;}S_FIFO;int FIFO_min(unsigned int ulFirst
2013-12-20 23:00:48
950
原创 栈
#include #include #include #include "stack.h" #include "stack_public.h"static SEQ_S_STACK s_stack;SEQ_S_STACK *STACK_getDev(void){ return &s_stack;}int STACK_init(SEQ_S_STACK *pStack)
2013-12-19 20:53:40
843
原创 内核链表的应用
#include #include "dlist_public.h"int LIST_initHead(LIST_S_NODE *pstHead){ if (NULL == pstHead) { return -1; } pstHead->next = pstHead; return 0;}int LIST_add(LIST
2013-12-18 21:41:24
788
转载 Ubuntu中文目录下vim退出后乱码
终端命令sudo update-alternatives --config vim有 2 个选项可用于替换项 vim (提供 /usr/bin/vim)。 选择 路径 优先级 状态------------------------------------------------------------ 0 /us
2013-10-19 12:22:12
827
转载 uboot的lowlevel_init.s解析
boot版本为201103rc1.看了一下lowlevel_init.s里面的代码,发现最难懂的地方当属这里了:ldr r0, =SMRDATAldr r1, _TEXT_BASEsub r0, r0, r1ldr r1, =BWSCON /* Bus Width Status Controller */add r2, r0, #13*4 第一
2013-10-09 00:11:43
1869
转载 ARM汇编中的LDR及ADR的区别及其在U-BOOT中的应用
我在看U-BOOT的lowlevel_init.S文件时看到以下代码:lowlevel_init:ldr r0, =SMRDATAldr r1, _TEXT_BASEsub r0, r0, r1ldr r1, =BWSCONadd r2, r0, #13*40:ldr r3, [r0], #4str r3, [r1], #4cmp r2, r0bne 0
2013-10-06 01:05:11
1056
转载 ARM汇编中ldr与adr的区别(转)
转自:http://coon.blogbus.com/logs/2738861.html ldr r0, _start adr r0, _start ldr r0, =_start nop mov pc, lr_start: nop编译的时候设置 RO 为 0x0
2013-10-06 01:04:21
1226
转载 ARM汇编伪指令 .word
经常碰到那些以“.”打头的一些令人头疼的伪指令,至于.globl _start .balign .align .data .text等等就算了,最最bt的如下:_undefined_instruction: .word undefined_instruction这个.word令人费解。网上的技术人员都不屑回答,说请参考GNU ASM。我去看了,对于.word解释如下:h
2013-10-06 01:00:18
877
转载 __asm__ __volatile__("": : :"memory")等系列问题
__asm__ __volatile__("": ::"memory")内存屏障(memory barrier) #define set_mb(var, value) do { var = value;mb(); } while (0) #define mb() __asm__ __volatile__ ("" : : :"memory")1)set_mb(),mb(),b
2013-10-02 20:52:11
5038
转载 汇编中标号 在c中的使用
u-boot/cpu/xx/start.S中:_TEXT_BASE: .word TEXT_BASE /*uboot映像在SDRAM中的重定位地址,我设置为0xa170 0000 */.globl _armboot_start _armboot_start: .word _start /*_start是程序入口,链接完毕它的值应该是0xa170 0000=TEXT_
2013-10-02 20:17:00
1219
转载 u-boot中的.balignl 16,0xdeadbeef的理解
最近在分析u-boot的源代码,看到这一行:.balignl 16,0xdeadbeef不理解了,不知道为什么要这样写,0xdeadbeef,明显是个单词组,写在这里有何意义呢?然后在查阅了众多资料的时候才晃然大悟。下面我一步步来说明:首先要弄明白.balignl的意思,这个其实应该算是一个伪操作符,伪操作符的意思就是机器码里,并没有一个汇编指令与其对应,是编译器来实现其功能的。.
2013-10-02 18:32:54
1099
转载 嵌入式系统 Boot Loader 技术内幕---http://www.ibm.com/developerworks/cn/linux/l-btloader/
1. 引言在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次:1. 引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选),和 Boot Loader 两大部分。2. Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。3. 文件系统。包括根文件系统和建
2013-09-28 00:07:47
1284
原创 u-boot
U-Boot 移植一、BootLoader 原理1. 嵌入式linux软件分布一般情况下嵌入式linux软件分为以下几部分:a. 引导加载程序,包括厂商在内部ROM中固化的启动代码,(其主导作用是为了引导BootLoader)和BootLoader两部分。b. linux内核和driver。c. 根文件系统和文件系统(建立在Flash内存设备之上的文件系统,比如:EXT4,
2013-09-28 00:03:10
714
原创 linux基础命令
一 .man manDESCRIPTIONman is the system's manual pager. Each page argument given to man is normally the name of a program,utility or function. The manual page associated with each of these argu
2013-09-26 22:31:34
1119
原创 linux 基础学习
1.man man DESCRIPTIONman is the system's manual pager. Each page argument given to man is normally the name of a program,utility or function. The manual page associated with each of these argu
2013-09-26 21:46:26
659
转载 Bluetooth HCI Event的处理
本文作者的博客地址:http://blog.sina.com.cn/samzhen1977作者:Sam (甄峰) sam_code@hotmail.com 1.当Bluetooth USBdongle插入USB接口时,driver/bluetooth/hci_usb.c中probe程序被调用。probe会调用hci_register_dev()--〉tasklet_init(&h
2013-09-13 00:48:25
1371
原创 我的 .vimrc stty -ixon
"-------------------------------------------------------------------------------"使用quickfix显示结果"-------------------------------------------------------------------------------set cscopequickfix=s-,
2013-09-13 00:25:43
1196
转载 getopt------------------getlong
getopt_long支持长选项的命令行解析,使用man getopt_long,得到其声明如下: #include int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex);
2013-04-06 00:41:11
1109
原创 编程规范
1.基本类型typedef unsigned char UINT8;typedef char INT8;typedef short int UINT16;typedef int INT16;
2013-04-04 09:54:08
744
转载 taglist 详解
本节所用命令的帮助入口::help helptags:help taglist.txt 使用下面的命令生成帮助标签:helptags ~/.vim/doc下面介绍常用的taglist配置选项,你可以根据自己的习惯进行配置: - Tlist_Ctags_Cmd选项用于指定你的Exuberant ctags程序的位置,如果它没在你PATH变量所定义的路径中,需要使用
2012-12-27 00:00:26
1624
转载 print格式控制说明
printf的格式控制的完整格式:% - 0 m.n l或h 格式字符下面对组成格式说明的各项加以说明:①%:表示格式说明的起始符号,不可缺少。②-:有-表示左对齐输出,如省略表示右对齐输出。③0:有0表示指定空位填0,如省略表示指定空位不填。④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精
2012-01-17 15:33:49
7784
原创 进程管理
进程:执行中的一个程序,它是动态的实体。、操作系统原理: 进程是进程调度和资源分配的基本单位,线程是进程调度的基本单位。进程四要素: 1.有一段程序供其执行。这段程序不一定要某个进程所有,可以与其它进程共用。 2.有进程专用的内核空间堆栈。 3.在内核中有一个task_struct 结构,我们通常称为进程控制块。有了
2012-01-14 15:15:23
803
转载 异步通知
要弄明白这个问题,我们得从最基本的原理开始。我们知道,驱动程序运行在内核空间中,应用程序运行在用户空间中,两者是不能直接通信的。但在实际应用中,在设备已经准备好的时候,我们希望通知用户程序设备已经ok,用户程序可以读取了,这样应用程序就不需要一直查询该设备的状态,从而节约了资源,这就是异步通知。好,那下一个问题就来了,这个过程如何实现呢?简单,两方面的工作。一 驱动方面:1
2011-12-06 17:33:55
3341
转载 alloc_netdev() 与alloc_etherdev()区别
alloc_netdev()函数生成一个net_device结构体,对其成员赋值并返回该结构体的指针。第一个参数是设备私有成员的大小,第二个参数为设备名,第三个参数为net_device的setup()函数指针。setup()函数接收的参数为struct net_device指针,用于预置net_device成员的值。linux-2.6.22/net/core/dev.c---
2011-12-02 16:40:41
2835
转载 函数指针数组在ARM中断中的应用
函数指针数组在ARM异常中断处理中的应用介绍一种简洁、高效、灵活的ARM异常中断处理方法。 在ARM中,由于所有的中断都使用同一个异常中断入口地址,即0x00000018。因此需要在异常中断处理程序中根据相应的中断号调用对应的中断服务函数。
2011-09-03 20:45:42
1996
转载 嵌入式面试1(转帖)
嵌入式面试题1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情: 1). #define 语法的基本知
2011-08-13 23:28:33
1161
转载 嵌入式面试2(转帖)
1> 如何判断一个板子的cpu 是big-endian 还是 Little-endian的?用c实现非常简单,10行左右,就可以判断了, 关键考察新人是否了解了什么是endian ,big-endian与little-endian的区别在哪里, 如果这些不清楚,就算c再强,也
2011-08-13 23:27:35
965
转载 嵌入式面试题3(转帖)
1.static变量和static 函数各有什么特点? static变量分两种,局部变量和全局变量,他们都放在全局数据区(我觉得表达不准确。全局静态变量本文件可见,局部静态变量在在定义的block内可见;static函数也放在全局数据区,外部文件不可见;
2011-08-13 23:26:56
3557
转载 嵌入式面试题5
凹凸笔试题目(嵌入式软件开发)2007-02-07Embedded Software Design Engineer1> 读程序段,回答问题int main(int argc,char *argv[]){int c=9,d=0;c=c++%5;d=
2011-08-13 23:25:41
2548
转载 嵌入式技术面试指南
面试, 微软简述:本文作者Joel Spolsky 是纽约市一家软件公司Fog Creek Software的创始人。他毕业于耶鲁大学,曾分别在美国微软、Viacom、Juno等公司任软件设计师、经理职位。本文来自于《祖儿谈软件》,文章原名为《轻松面试找到理想员工——非官
2011-08-13 23:24:07
3453
转载 嵌入式C/C++面试题(转帖)
1.引言 本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。 许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strc
2011-08-13 23:21:59
1695
转载 嵌入式Linux之我行——内核访问外设I/O资源的方式
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。共享资源,欢迎转载:http://blog.chinaunix.net/u3/99873/showart_
2011-08-13 15:32:51
623
转载 宏定义( 转自《Linux C编程一站式学习》)
转自http://eelab.tsinghua.edu.cn/book/09-11/856891276060145.html 全国嵌入式人才培训基地2.上一页 第 下一页
2011-08-13 14:52:41
639
转载 嵌入式Linux之我行——内核访问外设I/O资源的方式
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。共享资源,欢迎转载:http://blog.chinaunix.net/u3/99873/showart_
2011-08-13 13:47:29
627
转载 嵌入式Linux之我行——s3c2440的IO静态映射的分析
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。共享资源,欢迎转载:http://blog.chinaunix.net/u2/71164/showart_
2011-08-13 13:34:05
851
转载 对一名电子信息工程专业应届毕业生的建议
最近几天在帮公司招人(只是帮助招人,不要产生任何别的联想),晚上收到了一份网友的简历,他问我看了他的简历后有什么看法以及有哪些不足。虽然很晚了,但是觉得很有必要回复一下他,考虑到还有很多朋友存在着类似的问题,就写在QQ日志里了。首先声明,我的高度导致我就只能看这么远,也许
2011-08-13 09:54:40
1247
转载 嵌入式Linux之我行——设备文件系统剖析与使用
一、什么是Linux设备文件系统 首先我们不看定义,定义总是太抽象很难理解,我们先看现象。当我们往开发板上移植了一个新的文件系统之后(假如各种设备驱动也移植好了),启动开发板,我们用串口工具进入开发板,查看系统/dev目录,往往里面没有或者就只有null、conso
2011-08-13 01:31:17
584
转载 单片机的C语言中位操作用法
一、前言 在对单处机进行编程的过程中,对位的操作是经常遇到的。C51对位的操控能力是非常强大的。从这一点上,就可以看出C不光具有高级语言的灵活性,又有低级语言贴近硬件的特点。这也是在各个领域中都可以看到C的重要原因。在这一节中将详细讲解C51中的位操作及其应用。
2011-08-13 01:22:37
1213
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人