- 博客(34)
- 资源 (2)
- 收藏
- 关注
原创 undefined reference to `__exidx_start‘ undefined reference to `__exidx_end‘ 编译错误
undefined reference to `__exidx_start' undefined reference to `__exidx_end' 编译错误
2022-06-20 11:22:57
1427
转载 新型的按键扫描程序,仅三行程序
新型的按键扫描程序不过我在网上游逛了很久,也看过不少源程序了,没有发现这种按键处理办法的踪迹,所以,我将他共享出来,和广大同僚们共勉。我非常坚信这种按键处理办法的便捷和高效,你可以移植到任何一种嵌入式处理器上面,因为C语言强大的可移植性。同时,这里面用到了一些分层的思想,在单片机当中也是相当有用的,也是本文的另外一个重点。对于老鸟,我建议直接看那两个表达式,然后自己想想就会懂的了,也不
2014-04-18 18:29:43
723
原创 简单的汇编实例注释
ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令。比如想把数据从内存中某处读取到寄存器中,只能使用ldr比如: ldr r0, 0x12345678 就是把0x12345678这个地址中的值存放到r0中。 而mov不能干这个活,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中,这个和x86这种CISC架构
2014-03-20 20:45:50
3386
转载 diff和patch详解与例子
转载自:diff和patch使用指南diff和patch是一对工具,在数学上来说,diff是对两个集合的差运算,patch是对两个集合的和运算。 diff比较两个文件或文件集合的差异,并记录下来,生成一个diff文件,这也是我们常说的patch文件,即补丁文件。 patch能将diff文件运用于 原来的两个集合之一,从而得到另一个集合。举个例子来说文件A和文件B,经过diff之后生
2014-03-16 23:20:59
2417
原创 strcpy strcmp memcpy源码
好久没有自己写博客了,现在把一些库函数的实现写一下,写在CSDN上,就当做收藏吧char *strcpy(char *dest, const char *src) // strlen(dest) >== strlen(src) { char *str = *dest; if ((NULL == str) || (NULL == src)) { return NUL
2014-02-18 18:22:31
773
1
转载 kmalloc分配内核堆空间
kmalloc函数的原型是:[cpp] view plaincopy#include void *kmalloc(size_t size, int flags); kmalloc函数说明******size是要分配的块大小******flags分配方式,控制kmalloc分配内存的方式****
2014-02-12 09:43:50
1220
转载 Linux下的串口系列---struct termios结构体
termios结构体说明 termios结构体中,该结构体一般包括如下的成员:tcflag_t c_iflag; tcflag_t c_oflag; tcflag_t c_cflag; tcflag_t c_lflag; cc_t c_cc[NCCS]; 其具体意义如下 c_iflag:输入
2014-01-09 09:48:46
1006
转载 UART
UART编辑通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器,是电脑硬件的一部分。将资料由串行通信与并行通信间作传输转换,作为并行输入成为串行输出的芯片,通常集成于其他通讯接口的连结上目录1定义2功能
2014-01-08 17:25:05
1641
转载 UART和RS232/RS485的关系是什么?
串口通讯是电子工程师和嵌入式开发工程师面对的最基本问题,RS232则是其中最简单最常用的通讯方式。但是初学者往往搞不清有关的名词如UART和RS232或RS485之间是什么关系,因为它们经常被放到语句中同等的位置使用。在百度搜索二者的区别,可以看到排在最前面的答案充斥着混淆的概念。就此,谈谈我对这几个概念的理解,希望能帮初学者厘清它们之间的关系。~~ 通讯问题,和交
2014-01-08 16:04:04
937
转载 vim常用命令(全)
键盘移动 (Move)一切都从键盘的移动k -> 上 upj -> 下 downh -> 左 leftl -> 右 rightz -> 重画屏幕,当前光标变成屏幕的第一行 (redraw current line at top of window)CTRL-f -> 跳到下一页 (page down)CTRL-b -> 跳到上一页 (page up)跳跃
2014-01-08 09:17:38
1241
转载 U-BOOT源码分析及移植
本文从以下几个方面粗浅地分析u-boot并移植到FS2410板上:1、u-boot工程的总体结构2、u-boot的流程、主要的数据结构、内存分配。3、u-boot的重要细节,主要分析流程中各函数的功能。4、基于FS2410板子的u-boot移植。实现了NOR Flash和NAND Flash启动,网络功能。 这些认识源于自己移植u-boot过程中查找的资料和对源码的简单
2013-12-31 09:02:04
988
转载 U_boot 的 bootcmd 和bootargs参数详解
转自 :http://linux.chinaunix.net/bbs/archiver/tid-1111568.html U-boot的环境变量值得注意的有两个: bootcmd 和bootargs。u-bootcmd 前面有说过bootcmd是自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使
2013-12-30 15:43:40
646
转载 __asm__ volatile 之 C语言嵌入式汇编
在linux/include/unistd.h中定义的系统调用嵌入汇编宏函数_syscall0。其实展开不难发现就是一个函数,只不过用宏定义了。其中关键的是怎么理解 __asm__ volatile这个语法。对于__asm__ volatile这个固定形式,我们暂且不理会它(可参考http://blog.csdn.net/robbie1314/archive/2011/04/1
2013-12-19 10:07:21
1378
转载 C语言中可变参数的用法——va_list、va_start、va_arg、va_end参数定义
cC可变参目录(?)[+]C语言可变参简介写一个简单的可变参数的C函数 可变参数在编译器中的处理 可变参数在编程中要注意的问题 小结 C语言可变参简介 我们在C语言编程中会遇到一些参数个数可变的函数,例如printf()这个函数,它的定义是这样的: int printf( const cha
2013-12-16 09:31:33
912
转载 linux 中C语言便于调试的宏定义编写及 __FILE__,__FUNCTION__, __LINE__参数使用
在linux编程中,当文件数量变的众多之后,使用gdb调试就是一场灾难。因此在程序中加入合理的打印信息,定位错误出现的文件名,函数名,行号等信息,能更高效的定位到问题的所在。 下面定义了宏,分别是WARNING,INFO,ERROR,SHOW_TIME,DEBUG等。利用了 __FILE__,_FUNCTION__, __LINE__等变量。。。 _FILE__,
2013-12-16 09:29:09
1314
转载 static inline内联函数
内联函数有些类似于宏。内联函数的代码会被直接嵌入在它被调用的地方,调用几次就嵌入几次,没有使用call指令。这样省去了函数调用时的一些额外开销,比如保存和恢复函数返回地址等,可以加快速度。不过调用次数多的话,会使可执行文件变大,这样会降低速度。相比起宏来说,内核开发者一般更喜欢使用内联函数。因为内联函数没有长度限制,格式限制。编译器还可以检查函数调用方式,以防止其被误用。static in
2013-12-11 13:36:57
1423
转载 Linux 操作系统 SIGTERM等信号意义
SIGHUP 终止进程 终端线路挂断SIGINT 终止进程 中断进程SIGQUIT 建立CORE文件终止进程,并且生成core文件SIGILL 建立CORE文件 非法指令SIGTRAP 建立CORE文件 跟踪自陷SIGBUS 建立CORE文件 总线错误SIGSEGV 建立CORE文件
2013-12-05 17:35:01
1706
转载 C结构体之位域(位段)
有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位
2013-12-04 10:55:45
810
转载 lua与C/C++
目录(?)[+]头文件例一简单运行Lua代码例二与Lua交换数据例三在C中调用Lua子函数例四在Lua代码中调用C函数闭包closure伪索引函数库例五与Lua交换自定义数据使用metatable提供面向对象调用方式例六使用C包装类头文件在C中调用Lua函数在Lua代码中调用C函数在Lua代码中使用C类属性附 Lua语法简介语法约定类型表达式基本
2013-12-03 14:33:47
2726
转载 C enum 枚举
copy:http://blog.csdn.net/sim120/article/details/9979203 1. 枚举的定义枚举类型定义的一般形式为: enum 枚举名{ 枚举值表 };在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。例如: 该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday类型变量的取值只能是七天
2013-12-02 10:34:23
932
原创 lua和C/C++语言之间的调用
func.lua--变量定义width, height = 1, 2 ; --lua函数定义,实现加法function sum(a, b) return a + b;end --lua函数定义,实现字符串相加function mystrcat(a, b) return a .. b;end --lua函数定义,通过调用c代码中的csum函数实现加法functi
2013-11-29 11:21:26
1144
转载 (一)U-Boot启动过程--详细版的完全分析
copy:http://blog.csdn.net/hare_lee/article/details/6916325目录(?)[+]U-Boot启动第一阶段代码分析U-Boot启动第二阶段代码分析U-Boot启动Linux过程U-Boot添加命令的方法及U-Boot命令执行过程 -------------------------------------------
2013-11-28 15:20:10
1924
转载 lua math库
copy:http://blog.sina.com.cn/s/blog_a53e5daf01012k1h.htmlatan2、sinh、cosh、tanh这4个应该用不到。 函数名描述示例结果pi圆周率math.pi3.1415926535898abs取绝对值math
2013-11-28 10:56:50
2112
转载 lua string库函数
copy:http://blog.csdn.net/cws1214/article/details/16963231Lua 最强大的特性之一就是它的字符串处理能力,它支持字符格式化输出,具有可扩展的模式匹配查找功能,以及一些实用的字符操作,例如查询、截取、替换和删除等字符串操作,这些字符串操作函数都封装在一个名为 string 的模块里。Lua 里的字符索引是从 1 开始,索引值也可以
2013-11-27 15:48:45
1234
转载 Lua编译执行与错误 dofile loadstring
copy:http://www.cnblogs.com/stephen-liu74/archive/2012/06/22/2414417.html 1. 编译: Lua中提供了dofile函数,它是一种内置的操作,用于运行Lua代码块。但实际上dofile只是一个辅助函数,loadfile才是真正的核心函数。相比于dofile,loadfile只是从指定的文件中加载Lua代码块,
2013-11-27 13:44:23
1350
转载 Lua学习——闭包、迭代器
copy:http://blog.csdn.net/phenix32/article/details/8961592--[[ 时间:2013年5月22日11:25:40 作者:PhoenixCao 内容:Lua程序练习3--]]-- 闭包示例names = {"Peter","Phoenix","Mary"}grades = {Mary = 10, Peter =
2013-11-27 10:37:21
844
转载 lua table函数库
copy:http://blog.csdn.net/q277055799/article/details/8438926Lua中的table函数库一部分的table函数只对其数组部分产生影响, 而另一部分则对整个table均产生影响. 下面会分开说明. table.concat(table, sep, start, end)concat是concatenate(连锁,
2013-11-26 15:06:04
1531
转载 Lua语言中pairs和ipairs的区别
copy from: http://dotlive.blog.163.com/blog/static/2055111742011917103914229/tbl = {"alpha", "beta", ["one"] = "uno", ["two"] = "dos"}for key, value in ipairs(tbl) do print(key,
2013-11-26 11:35:05
599
转载 .bashrc文件
声明:此文属于转载,由于不知道最原始地址,故没有给出原文章连接! /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置./etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.~/.bash_prof
2013-11-22 13:35:48
3169
转载 Source Insight里的汉字问题
声明:此文属于转载,由于不知道最原始地址,故没有给出原文章连接! 【问题】Source Insight里输入中文,字间距相当的大。【答案】1.Options->Style Properties2. 在左边Style Name下找到Comment Multi Line和Comment.在其右边对应的Font属性框下的Font Name中选“Pick...” 设置为宋体、常规、
2013-11-22 09:10:31
919
原创 通过构造函数把两个类联系起来
今天学习是,这段代码new Thread(new MyRunnable2()).start(); 始终不理解,后来问了老师才明白的,为了避免忘记,自己写一个简单的代码来帮助于自己理解!Stu类:package com.zj.stu;public class Stu { public void m1() { System.out.println("Stu.m1()..")
2013-08-10 17:02:32
828
原创 java_父类和接口的引用类型的代码及其详解_原创
今天学习了java中的一个知识点,很是重要,自己就把他做了一个详细的注解,避免忘记!主要是java中有关于抽象了和接口的引用类型变量保存子类或实现类得访问的问题,好了,其它的废话不多说了,直接看代码,和代码的详细注解!以下代码都是通过eclipse编辑和运行通过的/** * 抽象类A,中有抽象方法,普通方法和成员变量 * */package com.zj.i
2013-08-09 19:52:38
1122
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人