随笔 - 342  文章 - 0 评论 - 49 阅读 - 147万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

11 2013 档案
uboot环境变量区为何不能放在data段
摘要:一、疑问 环境变量也是全局变量,为何不能像其他的全局变量放在data段呢?为什么要放在堆中或者使用ENV_IS_EMBEDDED定义的CFG_ENV_SIZE的空间大小,又为什么需要这么大的空间呢?二、认识1、尝试放在data段 由于环境变量区不像其他的全局变量,环境变量可以被删除,可以被更改,可以添加,这就要求存储环境变量的空间是足够大的。 也许可以用结构体数组来实现,分别存放环境变量的名字,及相应的值。这样就可以将环境变量放在data段,我们希望在经过start.s重定位后,环境变量已经处于指定的位置了。struct environment{ struct environment *... 阅读全文
posted @ 2013-11-30 21:30 amanlikethis 阅读(546) 评论(0) 推荐(0) 编辑
环境变量源位置
摘要:一、如果用CFG_ENV_IS_NOWHERE这种策略(只有一个源) 环境变量不存于非易失存储器上,那么使用default_environment(位于数据段.data)。二、倘若使用了非易失存储器上的环境变量(两个源)1、存储器 倘若能通过校验,就使用这个源,以ENV_IS_EMBEDDED为例。2、数据段.data(default_environment) 倘若不能通过校验,就使用这个源。 阅读全文
posted @ 2013-11-30 17:11 amanlikethis 阅读(323) 评论(0) 推荐(0) 编辑
norflash移植及uboot 保存环境变量实验
摘要:一、实验环境实验板:TQ2440开发板SDRAM:64Mnorflash:EN29LV160AB(2M)nandflash:(256M)二、移植 本文不详谈从smdk2410移植到TQ2440的详细过程,只把涉及本文的norflash移植详细阐述。1、norflash移植/*----------------------------------------------------------------------- * FLASH and environment organization */#define CONFIG_AMD_LV800 1 /* EN29LV160AB与AM... 阅读全文
posted @ 2013-11-29 20:57 amanlikethis 阅读(943) 评论(0) 推荐(0) 编辑
uboot内存分布
摘要:一、uboot的内存分布图山人自己画的图华清远见的图二、如何修改编译地址 board/smdk2410/config.mk中定义有TEXT_BASETEXT_BASE = 0x33F80000 上图中所有的地址都是以它为基准的,其他的地址都是加上偏移量所作的。 阅读全文
posted @ 2013-11-29 18:07 amanlikethis 阅读(1745) 评论(0) 推荐(0) 编辑
uboot环境变量初始化
摘要:一、环境变量概述1、环境变量的概念 可以理解为用户对软件的全局配置信息,这部分信息应该可以从永久性存储器上读取,能被查询,能被修改。 启动过程中,应该首先把环境变量读取到合适的内存区域,然后利用环境变量初始化硬件、启动操作系统等等。2、启动过程中环境变量初始化过程涉及的问题 这里涉及到两个问题: 环境变量在哪个地方存着(从哪个地方取) 将环境变量存储到哪里(放到哪)(1)环境变量位于存储器(norflash、nandflash ) “CFG_ENV_IS_IN_XXX”(CFG_ENV_IS_IN_FLASH、CFG_ENV_IS_IN_NAND等等)定义了则这种情况有效,以在fl... 阅读全文
posted @ 2013-11-29 15:36 amanlikethis 阅读(6647) 评论(0) 推荐(0) 编辑
start_amboot()函数分析
摘要:一、整体流程 start_amboot()函数是执行完start.S汇编文件后第一个C语言函数,完成的功能自然还是初始化的工作 。1、全局变量指针r8设定,以及全局变量区清零2、执行一些类初始化函数,详细见init_sequence所对应的函数3、初始化norflash4、初始化显示器5、初始化堆区6、初始化nandflash7、环境变量重定位,详见uboot环境变量(env)初始化8、网络设置9、设备初始化,详见uboot的devices_init函数分析10、函数跳转表初始化,详见uboot的jumptable_init函数分析11、控制台初始化12、中断使能最终:进入main_loop二 阅读全文
posted @ 2013-11-29 15:16 amanlikethis 阅读(840) 评论(0) 推荐(0) 编辑
uboot全局变量
摘要:一、global_data(include/asm-arm/global_data.h)typedef struct global_data { bd_t *bd; unsigned long flags; unsigned long baudrate; unsigned long have_console; /* serial_init() was called */ unsigned long reloc_off; /* Relocation Offset */ unsigned long ... 阅读全文
posted @ 2013-11-29 14:04 amanlikethis 阅读(1492) 评论(0) 推荐(0) 编辑
init_sequence所对应的函数
摘要:一、init_sequence内容init_fnc_t *init_sequence[] = { cpu_init, /* basic cpu dependent setup */ board_init, /* basic board dependent setup */ interrupt_init, /* set up exceptions */ env_init, /* initialize environment */ init_baudrate, /* initialze baudra... 阅读全文
posted @ 2013-11-29 13:57 amanlikethis 阅读(1330) 评论(0) 推荐(0) 编辑
”ENV_IS_EMBEDDED“解惑以及相关的移植实验
摘要:一、概述(ENV_IS_EMBEDDED的目的)经典资料认识 ENV_IS_EMBEDDED只有在CFG_ENV_IS_IN_FLASH或者CFG_ENV_IS_IN_NAND定义了才有效。也就是说,这种功能只有在使用了norflash或者nandflash时才有效。本文是以使用norflash为例来说明的。 上边贴的几张图片讲的内容主要是这个意思:由于uboot.bin是100多kb,而环境变量要占一个扇区。norflash前100Kb中才有空间比较小的扇区,例如第二个扇区才8Kb,而后边的扇区比较大,都是64Kb。程序运行后,通常需要将环境变量拷贝到RAM中,这样访问速度才快,因此... 阅读全文
posted @ 2013-11-29 12:51 amanlikethis 阅读(1793) 评论(0) 推荐(1) 编辑
source insight 使用技巧
摘要:1、在所有文件中查找字符串 方法①:菜单栏选择“search project” 方法②:在随便一个工程文件中把所要查找的字符串输入到空白的地方,然后点连接 2、打开正在阅览文件的位置 step ①:Options -> Custom Commands -> Add step ②:为此命令,添加快捷键 阅读全文
posted @ 2013-11-29 09:49 amanlikethis 阅读(883) 评论(0) 推荐(0) 编辑
打印所在函数和行数的调试技术
摘要:__FILE__,__FUNCTION__,__LINE__是编译器产生的三个常参数,常被用来调试程序,非常有用。到底这三个东东是什么,看了实验,不言而喻。vc测试gcc测试发现 笔者发现vc6.0不支持__FUNCTION__,支持其他两个,而gcc三个都支持。 阅读全文
posted @ 2013-11-28 21:48 amanlikethis 阅读(239) 评论(0) 推荐(0) 编辑
字符串还可以这样初始化--uboot篇
摘要: 阅读全文
posted @ 2013-11-28 16:20 amanlikethis 阅读(277) 评论(0) 推荐(0) 编辑
C语言中”#x“的含义
摘要:#x 的含义是给x添加“”,也就是说将字符常量、常量转换为字符串常量 阅读全文
posted @ 2013-11-28 16:11 amanlikethis 阅读(3618) 评论(0) 推荐(0) 编辑
uboot 连接脚本分析
摘要:一、脚本分析OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") /* 指定输出可执行文件是elf格式,32位ARM指令,小端*//*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/OUTPUT_ARCH(arm) /* 指定输出文件的平台体系是 ARM */ENTRY(_start) /* 指定可执行映像文件的起始段的段名是_s 阅读全文
posted @ 2013-11-28 13:12 amanlikethis 阅读(506) 评论(0) 推荐(0) 编辑
ARM的STRB和LDRB指令分析
摘要:一、SDRAM1、存储结构 SDRAM的内部是一个存储阵列。阵列就如同表格一样,将数据“填”进去。在数据读写时和表格的检索原理一样,先指定一个行(Row),再指定一个列 (Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理 这个单元格(存储阵列)就叫逻辑 Bank(Logical Bank,下文简称 L-Bank)。 由于技术、成本等原因,不可能只做一个全容量的 L-Bank,而且最重要的是,由于 SDRAM的工作原理限制,单一的 L-Ban k将会造成非常严重的寻址冲突,大幅降低内存效率。所以人们在 SDRAM内部分割成多个 L-Bank,目前基本都是 4个.. 阅读全文
posted @ 2013-11-26 22:10 amanlikethis 阅读(23168) 评论(0) 推荐(3) 编辑
union 与struct的空间计算
摘要:一、x86总体上遵循两个原则:整体空间----占用空间最大的成员(的类型)所占字节数的整数倍对齐原则----内存按结构成员的先后顺序排列,当排到该成员变量时,其前面已摆放的空间大小必须是该成员类型大小的整倍数,如果不够则补齐,以此向后类推说明:假定结构体是从地址0开始依次存放各个变量的struct s1 { 变量占据内存位置 去掉余下变量后结构体所占内存空间 char a; //0 //1 double b; //8-15 //16 int c; //16-19 //24... 阅读全文
posted @ 2013-11-26 20:27 amanlikethis 阅读(703) 评论(0) 推荐(0) 编辑
大小端格式
摘要:一、概念 大端模式,是指数据的高位,保存在内存的低地址中,而数据的低位,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; 小端模式,是指数据的高位保存在内存的高地址中,而数 据的低位保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。二、测试你的计算机是大端还是小端 1 #include 2 int main(void) 3 { 4 int a = 0x12345678; 5 unsigned char *p=(unsigned ... 阅读全文
posted @ 2013-11-26 16:35 amanlikethis 阅读(642) 评论(0) 推荐(0) 编辑
sizeof()用法
摘要:参考:sizeof_百度百科 sizeof()用法汇总(经典)声明:本文是笔者抽出对自己有用的细节,对前两文的总结。1、sizeof概念 sizeof是C语言中判断数据类型或者表达式长度符;不是一个函数,它的计算在程序编译时进行,而不是在程序执行的过程中才计算出来。所有sizeof()在编程过程中可以看做是一个常数来处理。2、与strlen()比较 strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素 sizeof计算数据(变量、类型、结构体等)所占内存空间,用字节数表示char s[] = "hello" 阅读全文
posted @ 2013-11-26 11:15 amanlikethis 阅读(680) 评论(0) 推荐(0) 编辑
warning: no newline at end of file
摘要:编译错误:warning: no newline at end of file原因:程序结尾需要有一个空行解决办法:在程序末尾多打个回车就行了 阅读全文
posted @ 2013-11-25 17:52 amanlikethis 阅读(575) 评论(0) 推荐(0) 编辑
arm-linux-gcc编译器定义寄存器变量
摘要:uboot代码中有这么一句话“#define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r8")”,困扰了山人多时。经过多番求索,才得知原来是定义了一个全局的寄存器变量gd_t(r8是它的专用寄存器)。 详细解释一下,... 阅读全文
posted @ 2013-11-25 16:42 amanlikethis 阅读(2877) 评论(3) 推荐(0) 编辑
数据类型和数值范围
摘要:x86 数据类型 类型标示符 字节 数值范围 整形 [signed] int 4 -2147483648~+2147483647 无符号整形 unsigned int 4 0~4294967295 短整型 short [int] 2 -32768~+32767 无符号短整型 unsigned short [int] 2 0~65535 长整形 long [int] 4... 阅读全文
posted @ 2013-11-24 20:07 amanlikethis 阅读(876) 评论(0) 推荐(0) 编辑
“typedef int (init_fnc_t) (void);“的含义
摘要:在读uboot的lib_arm/board.c中的start_armboot ()函数遇到了"init_fnc_t **init_fnc_ptr;”一句话,后来查看init_fnt_t数据类型的定义,看到“typedef int (init_fnc_t) (void);”,不过这句话似乎也不容易看懂,经过一番搜索和实验,才知其确切含义。 先看看这个“typedef int (*init_fnc_t) (void);”。后者很清楚就是定义了一个指向int (function)(void)类型函数的指针,函数无形参,返回一个int类型的变量。“typedef int (init_fnc_ 阅读全文
posted @ 2013-11-24 13:14 amanlikethis 阅读(514) 评论(0) 推荐(0) 编辑
程序员应该关心自己的身体
摘要:程序员需要技术,是毋庸置疑的。程序员也需要具备优秀的身体条件,这一点似乎很少被程序员足够的重视。但是,我认为优秀的身体状态对于程序员是必不可少的。倘若一个程序员生活混乱,身体糟糕,他也不可能成为一个优秀的程序员。 为什么我要强调这一点呢?设想,一个要完成非常富有逻辑性、周密性工程的人倘若头脑昏沉、心烦意乱,是很难做好工作的。我之所以看重身体状态,正是基于程序员所面对的工作来说的。其实,任何工作都需要工作人员有良好的身体状态,只不过编程尤甚。 大多程序员经常处于这种状态:经常遇到许技术难题,花费很多的时间潜心钻研,甚至不惜废寝忘食投入其中。从热爱科学的层面上说,或者从勤奋的美德上说,这种行... 阅读全文
posted @ 2013-11-23 23:15 amanlikethis 阅读(552) 评论(0) 推荐(1) 编辑
uboot start.S分析
摘要:一、概述 1、本文综述及特色 阅读uboot,start.S是第一个源程序文件,主要完成初始化看门狗、定时器、重定位(拷贝代码段到内存中)、初始化堆栈、跳转到第二阶段等工作。 网上关于这些内容的解释已经非常详细了,但是很少有人设计start.S中有关异常处理的分析,即使有分析也是源码自带的英文... 阅读全文
posted @ 2013-11-22 13:07 amanlikethis 阅读(1297) 评论(0) 推荐(1) 编辑
microsoft office visio基本使用方法
摘要:以下是画流程图、程序内存分配等等框图用到的点滴使用方法,记录在这里以备偶尔只需。1、画大括号“{}” 在Visio操作界面下,依次点击“文件(File)”—“形状(Shapes)”--“其他Visio方案(Visio Extras)”—“标注(Callouts)”,然后左边的选项中多了“标注”栏,在“标注”栏中有“侧边大括号”。默认是右侧,倘若需要左侧可以旋转180度。2、放文本框 在Visio操作界面下,在工具栏,选择“文本工具”或者“文本块工具”,它的图标是“A”。放完一个文本框后,还可以继续放其他的文本框,倘若不想再放了,可以单击“指针工具”,它的图标是“鼠标模样”。3、截图 可能是.. 阅读全文
posted @ 2013-11-21 16:23 amanlikethis 阅读(7323) 评论(0) 推荐(0) 编辑
如何让U盘支持大于4G的文件
摘要:U盘通常是FAT(*)格式,不能支持大于4G的文件。为了实现这个目的,通常可以把U盘格式化成NTFS或者exFAT,这两种文件系统都支持大于4G的文件。一、格式化成NTFS第一步首先我们把优盘插入电脑中,打开“我的电脑”,右击优盘盘符来选择“属性”,在弹出的“属性”窗口中点击“硬件”标签,在列表中选中你的优盘驱动器,选中后点击下面的“属性”按钮。小贴士:NTFS (New Technology File System)是 Windows NT 操作环境和 Windows NT 高级服务器网络操作系统环境的文件系统,支持文件加密和分别管理功能,支持更大的分区容量和硬盘容量,在安全性和读取速度又. 阅读全文
posted @ 2013-11-20 17:00 amanlikethis 阅读(1099) 评论(0) 推荐(0) 编辑
NotePad++更改背景颜色
摘要:白色的编辑框看得眼睛不舒服,怎么样更改NotePad++的背景颜色使眼睛更舒服些?1.设置--语言格式设置2.设置背景色“背景色”一栏,选择背景色颜色 “使用全局背景色”一栏要打上√,否则无效参考网址:NotePad++更改背景颜色 阅读全文
posted @ 2013-11-20 16:50 amanlikethis 阅读(1273) 评论(0) 推荐(0) 编辑
在ADS上由于volatile惹得祸
摘要:C语言关键字volatile是一个危险的东东,笔者再用ADS做S3C2440定时器中断实验就因为这个关键字出了错。出现错误情况的准确描述是:定义一个变量时没有用volatile关键字,而且紧接着while(1)循环里边就有对这个变量的读操作。 这个实验想实现的功能是:定时时间为1s,用一个led灯显 阅读全文
posted @ 2013-11-20 15:31 amanlikethis 阅读(378) 评论(0) 推荐(0) 编辑
实现目标文件与源码分开的makefile测试实验
摘要:uboot提供了两种编译策略,即可以将生成的目标文件与源码混在一起,也可以将生成的目标文件与源码分开。通过对uboot Makefile的分析,笔者编写了一个简单的实现这种功能的Makfile。顶层makefileifneq ((BUILDDIR),)savedoutput:=(BUILD_DIR)# Attempt to create a output directory.(shell[d{BUILD_DIR} ] || mkdir -p ${BUILD_DIR}) //创建目录BUILD_DIR# Verify if it was successful.BUIL.. 阅读全文
posted @ 2013-11-17 19:31 amanlikethis 阅读(1474) 评论(0) 推荐(0) 编辑
uboot顶层config.mk分析
摘要:uboot顶层目录中的config.mk定义了确定了当前执行makefile所对应的源文件目录、目标文件目录,编译的程序编译、连接的选项,以及目标文件生成的规则等等。它被包含在顶层的makefile以及各个子目录的makefile中,可以说算是一个全局的makefile包含文件。ifneq ((OBJTREE),(SRCTREE)) //判断目标目录和源文件目录是否一样,如果不一样下边的有效ifeq ((CURDIR),(SRCTREE)) //判断当前目录是否是顶层目录dir := ... 阅读全文
posted @ 2013-11-17 14:37 amanlikethis 阅读(2522) 评论(0) 推荐(0) 编辑
uboot 顶层makefile细节分析
摘要:uboot的源文件众多,学习庞然大物首先找到脊椎--顶层的makfile,逐一破解。但是,uboot的makefile同样是一个庞然大物,所以也要找到它的主线。倘若过分专注部分细节,很难做到把握全局,实际上也不可能很好理解细节。 介于此,笔者已经写了一篇uboot makefile整体解析,可以先从主体上把握makefile。然后,再读这篇makefile强大功能实现的细节,才能做到循序渐进。 说明:uboot顶层makefile的注释机会全部源码都搬上来了,而注释都是黑体加粗以与源码有强烈的区别。VERSION = 1 //主版本号PATCHLEVEL = 1 //次级... 阅读全文
posted @ 2013-11-17 11:59 amanlikethis 阅读(3397) 评论(0) 推荐(0) 编辑
makefile中PHONY的重要性
摘要:伪目标是这样一个目标:它不代表一个真正的文件名,在执行make时可以指定这个目标来执行所在规则定义的命令,有时也可以将一个伪目标称为标签。伪目标通过 PHONY来指明。 PHONY定义伪目标的命令一定会被执行,下面尝试分析这种优点的妙处。 1、如果我们指定的目标不是创建目标文件,而是使用makefi 阅读全文
posted @ 2013-11-17 11:12 amanlikethis 阅读(7311) 评论(2) 推荐(0) 编辑
阅读程序的方法
摘要:引 程序是设计思想的体现。程序在设计之初,设计者会有一些列的目的(设计目标),接下来才是实现这些目的的思路(设计流程),最后才是具体地实现。 阅读程序是程序员必备的技能,通过阅读高手的程序,了解程序的功能,学习程序设计的技巧。比较短的程序段,比如说一千行一下的程序,通常都不复杂,很容易读懂。但是,碰上上万行的程序,比如说ucos-ii内核,linux 0.11内核,uboot启动代码,没有一定的阅读技巧,像无头苍蝇一样的读,显然会四处碰壁。有些程序阅读者,心情浮躁,这本身就是程序员的大忌。在读海洋般的代码时,不肯钻进去,找很多的相关资料,大概了解了程序的结构和工作原理,就草草了事。似乎... 阅读全文
posted @ 2013-11-16 20:04 amanlikethis 阅读(749) 评论(0) 推荐(0) 编辑
gcc向待编译源文件传入参数的方法
摘要:gcc有两种方法向待编译源文件传入参数第一种 利用–Dmacro=name 编译选项,详见gcc -D选项第二种 利用链接脚本(*.lds)传入参数,类似于ADS的编译器参数可以被待编译源文件调用举例:SECTIONS { . = 0x00000000; .init : AT(0){ head.o init.o nand.o} . = 0x30000000; .text : AT(4096) { *(.text) } .rodata ALIGN(4) : AT((LOADADDR(.text)+SIZEOF(.text)+3)&~(0x03)) {*(.rodat... 阅读全文
posted @ 2013-11-15 15:53 amanlikethis 阅读(1257) 评论(0) 推荐(0) 编辑
gcc -D选项
摘要:一、概念 gcc的-D选项可以定义宏,这是什么意思呢? C语言源程序中有#define定义的宏,可以起到替换、条件编译的功能;定义宏的方式是放在头文件或者C文件中。gcc提供了另外一种宏定义的方法,当然可以想象这样的宏定义方法并不是很好用,但毕竟编译器给我们提供了额外的宏定义的方法。假设程序需要很多宏,不可能这些宏都在编译器中定义,可以说比较重要的宏才会放在gcc的D选项后边。-Dname 定义宏name,默认定义内容为字符串“1”-Dname=defn 定义宏name,并且内容为defn二、实验测试程序:#include int main(){ #ifdef HELLO prin... 阅读全文
posted @ 2013-11-14 19:16 amanlikethis 阅读(8957) 评论(0) 推荐(2) 编辑
一个matlab数字图像处理程序的解释
摘要:clc; %clc是清除command window里的内容clear all; %clear是清除workspace里的变量close all; %close all来关闭所有已经打开的图像窗口image_ori = imread('skeleton_orig.bmp'); %读取图像数据im... 阅读全文
posted @ 2013-11-14 15:40 amanlikethis 阅读(1072) 评论(0) 推荐(0) 编辑
u-boot Makefile整体解析
摘要:一、概述1、理解u-boot的makefile需要的准备 linux常用命令、shell脚本基础知识、makefile脚本基础知识2、Makefile的元素 万变不离其宗,无论工程多么复杂,文件多么庞大,其实源于最简单的makefile。Makefile典型的规则如下。目标:依赖1,依赖2••••... 阅读全文
posted @ 2013-11-12 17:01 amanlikethis 阅读(7139) 评论(2) 推荐(1) 编辑
LDR伪指令与ADR伪指令的区别
摘要:测试代码 ldr r0, _start adr r0, _start ldr r0, =_start nop mov pc, lr_start: nop设置代码的起始地址为0x0c008000,用 ADS1.2编译后的反汇编如下所示↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓0c008000 :c008000: e59f000c ldr r0, [pc, #12] ; c008014 c008004: ... 阅读全文
posted @ 2013-11-12 15:59 amanlikethis 阅读(906) 评论(0) 推荐(0) 编辑
强制类型转换的重要性
摘要:在做ISD4004语音芯片驱动程序时,欲读取录音或者放音的地址,编了一段程序如下所示。但是,程序一直执行错误。/***************************************************************函数功能:SPI串行发送24位命令并同时接收24位数据的函数,接收的8位数 据高位低位反向(*|*|*|*|*|P16|···P1|P0|EOM|OVF|0|0|0|0|0|0|0|0)****************************************************************/unsigned 阅读全文
posted @ 2013-11-11 20:41 amanlikethis 阅读(805) 评论(0) 推荐(0) 编辑
函数模板的真相
摘要:C++语言提供的函数模板解决函数体完全相同,只是形参不同的几个函数不必重复定义的问题,但是它隐藏了一些操作,当然这些工作是编译器完成的。以一个经典的例子来进行分析。#include using namespace std;template T max(T a, T b,T c){ if(b > a) a = b; if(c > a) a = c; return a;} int main(){ int i1 = 185,i2 = -76,i3 = 567,i; double d1 = 34.3,d2 = 12.3,d3 = 1.3,d; long g1 = ... 阅读全文
posted @ 2013-11-07 23:11 amanlikethis 阅读(251) 评论(0) 推荐(0) 编辑
在ubuntu下利用minicom实现串口通信
摘要:windos有串口调试助手,linux下也有这样的工具——minicom。不过,minicom和linux下的许多工具都一样,也是命令行模式,没有图形化界面供我们享受。作为一款串口调试工具,虽然难看但总比没有的好。 为什么linux下的工具都这么的简朴,没什么华丽的界面,好像回到了解放前。一种可能... 阅读全文
posted @ 2013-11-07 21:42 amanlikethis 阅读(10910) 评论(0) 推荐(0) 编辑
linux中C的静态库和动态库分析
摘要:从开始学C语言写第一个"hello world"历程到现在,我依然困惑于到底这个程序完整的执行流程是什么样的。不过,现在我正在尝试一点一点的揭开它的面纱。现在,我尝试分析linux中C语言静态库和动态库生成和调用的方法,这可以算作实现最终愿望的一小步。 首先说明的是,本文参考于linux 静态库、共享库,这篇文章写的的确不错。笔者结合自己的学习过程,稍作修改。一、什么是库 本质上说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows和linux本质的不同,因此二者的二进制库是不兼容的。linux操作系统支持的函数库可分为静态库和动态库,动态库又称为 阅读全文
posted @ 2013-11-04 10:42 amanlikethis 阅读(1334) 评论(0) 推荐(0) 编辑
ARM编译器4字节对齐
摘要:(1)我们假设只有一个赋初值的char型全局变量,那么系统会在data区分配一个4字节的存储空间来存储它。实际上,只用了1个字节,但是为了4字节对齐,只好分配4个字节,所以就会有3个字节浪费。(2)我们假设在原来基础上增加一个赋初值的char型全局变量,那么系统会在data区原来的4字节中取出一个字节来保存这个新的变量。实际上,这时只用了2个字节,但是为了4字节对齐,只好分配4个字节,所以就会有2个字节浪费。(3)我们假设再在原来基础上增加一个赋初值的short型全局变量,那么系统会在data区原来的4字节中再取出两个字节来保存这个新的变量。实际上,这时用了4个字节,恰好4字节对齐,所以就不会 阅读全文
posted @ 2013-11-01 17:19 amanlikethis 阅读(1739) 评论(0) 推荐(0) 编辑
ubuntu下安装eclipse IDE for C/C++ developers
摘要:序 linux的GUI和windos比起来实在逊色,虽然它的终端模式(命令行模式)非常强大。linux发行版ubuntu的GUI相对其他版本要华丽一些,所以最近由redhat转向ubuntu进行linux的学习。曾经一度使用gcc命令行模式来编译、调试C程序,但是我还是渴望一个C/C++集成开发环境 阅读全文
posted @ 2013-11-01 16:24 amanlikethis 阅读(30390) 评论(1) 推荐(0) 编辑
ubuntu apt-get常用命令的使用
摘要:packagename指代为软件包的名称apt-get install packagename 安装一个新软件包(参见下文的aptitude)apt-get remove packagename 卸载一个已安装的软件包(保留配置文档)apt-get remove --purge packagname 卸载一个已安装的软件包(删除配置文档)apt-get autoremove packagename 同上,比上面的要删除的彻底一点dpkg --force-all --purge packagename 有些软件很难卸载,用这个命令试试,不过有风险apt-cache search string . 阅读全文
posted @ 2013-11-01 10:21 amanlikethis 阅读(360) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示