摘要:函数名: strcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例: #include <stdio.h> #include <string.h> int main(void) { char string[1
阅读全文
摘要:ASCII码表 ASCII码大致可以分作三部分組成。 第一部分是:ASCII非打印控制字符; 第二部分是:ASCII打印字符; 第三部分是:扩展ASCII打印字符。 第一部分:ASCII非打印控制字符表 ASCII表上的数字0–31分配给了控制字符,用于控制像打印机等一些外围设备。例如,12代表换页
阅读全文
摘要:编译: 第一步、是进行预编译,使用-E参数可以让GCC在预处理结束后停止编译过程: gcc -E hello.c -o hello.i 预处理的宏定义插入到hello.i中 第二步、是将hello.i编译为目标代码,这可以通过使用-c参数来完成: gcc -c hello.i -o hello.o
阅读全文
摘要:看看下面的程序的输出: #include <stdio.h> char *returnStr() { char *p="hello world!"; return p; } int main() { char *str; str=returnStr(); printf("%s\n", str); r
阅读全文
摘要:C99 ( ISO/IEC 9899:1999 ) 网上有pdf文件。 C标准中指定了一些预定义的宏,对于编程经常会用到。下面这个表中就是一些常常用到的预定义宏。 __DATE__ 进行预处理的日期(“Mmm dd yyyy”形式的字符串文字) __FILE__ 代表当前源代码文件名的字符串文字 _
阅读全文
摘要:#进行宏字符串连接,在宏中 把参数解释为字符串,不可以在语句中直接使用。 在宏定义中 printf("%s;/n", #S) 会被解释为 printf("%s;/n", "S") 例如下面的代码 code start #define TRACE(S) (printf("%s;/n", #S), S)
阅读全文
摘要:printf的声明 int _cdeclprintf(const char* format, …); _cdecl是C和C++程序的缺省调用方式_CDEDL调用约定: 1.参数从右到左依次入栈 2.调用者负责清理堆栈 3.参数的数量类型不会导致编译阶段的错误对于x86而言,栈向下生长,函数参数从右向
阅读全文
摘要:内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足 需求,于是产生溢出。 内存泄漏是指你向系统申请分配内存进行使用(new),可是使用完了以后却不归还(delete),结果你申请到的那块内存你自己也不能再访问(也许你把它的地址给弄丢了),而系统也不能再次将它分配给需要的程序。一个盘子用尽各
阅读全文
摘要:c语言的强符号和弱符号是c初学者经常容易犯错的地方。而且很多时候,特别是多人配合开发的程序,它引起的问题往往非常行为怪异而且难以定位。 什么是强符号和弱符号? 在c语言中,函数和初始化的全局变量是强符号,未初始化的全局变量时弱符号。强符号和弱符号的定义是连接器用来处理多重定义符号的,它的规则是: 不
阅读全文
摘要:所谓的大端模式,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; 所谓的小端模式,是指数据的低位保存在内存的低地址中,而数 据的高位保存在内存的高地址中,这
阅读全文
摘要:gcc提供了大量的警告选项,对代码中可能存在的问题提出警 告,通常可以使用-Wall来开启以下警告: -Waddress -Warray-bounds (only with -O2) -Wc++0x-compat -Wchar-subscripts -Wimplicit-int -Wimplicit
阅读全文
摘要:从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。 ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。ASCII码文件可在屏幕上按字符显示。 二进制文件是按二进制的编码方式来存放文件的。二进制文件虽然也可在屏幕上显示,但其内容无法
阅读全文
摘要:函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。 其调用格式为:
阅读全文
摘要:1:当无法列出传递函数的所有实参的类型和数目时,可用省略号指定参数表void foo(...);void foo(parm_list,...); 2:函数参数的传递原理函数参数是以数据结构:栈的形式存取,从右至左入栈.eg:#include <iostream>void fun(int a, ...
阅读全文
摘要:(一) 在Linux中,用命令行执行可执行文件时可能会涉及到给其加入不同的参数的问题,例如: ./a.out -a1234 -b432 -c -d 程序会根据读取的参数执行相应的操作,在C语言中,这个功能一般是靠getopt()这个函数,结合switch语句来完成的,首先来看下面的代码: #incl
阅读全文
摘要:大量可用的引导装载程序(bootloader)、规模缩小的分发版(distribution)、文件系统和 GUI 看起来可能太多了,但是这些丰富的选项实际上是一种恩赐,允许您调整开发或用户环境以完全符合您的需要。 许多 Linux 改良品种迎合了嵌入式/实时市场。它们包括 RTLinux(实时 Li
阅读全文
摘要:Minicom:Linux下的终端程序,用于通过串口进行通信,在嵌入式Linux系统中,可以用于主机与目标系统通信,实现串口控制台的功能。 DHCP: 动态主机配置协议。运行实现该协议的服务的主机,通过对客户发起的DHCP请求进行应答,可以动态的配置客户机的IP地址等网络信息。 TFTP: 一种FT
阅读全文
摘要:由于系统调用都是从调用中断开始的,所以我们还是从中断讲起. 关于中断: Intel386认识两种事件类:异常(exception)与中断(interrupt)。两者都会强制性创建一个进程或任务。中断能在任何不可预料的时间发生,来响应硬件的信号,是硬中断;而异常是由指令执行而产生的,是软中断。 386
阅读全文
摘要:理发师问题: 理发店理有一位理发师、一把理发椅和n把供等候理发的顾客坐的椅子 如果没有顾客,理发师便在理发椅上睡觉 一个顾客到来时,它必须叫醒理发师 如果理发师正在理发时又有顾客来到,则如果有空椅子可坐,就坐下来等待,否则就离开。 解法: 引入3个信号量和一个控制变量: 1)控制变量waiting用
阅读全文
摘要:Part 1:Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发
阅读全文
摘要:一、 在Linux 系统中,对硬件判别的标识的依据 在LinuxSir.Org讨论区,我们经常看到有些弟兄这样来描述自己的硬件“我的显示卡是XXX牌子的,Linux不支持怎么办?”。其实这样描述是 最差的,大家也根本没有办法提供帮助;因为Linux对硬件的识别是以为芯片组的厂商为依据的,而非硬件的品
阅读全文
摘要:I/O空间 I/O端口和I/O内存 首先上图,如下:外设中的寄存器被称为I/O端口,外设中的内存被称为I/O内存。二者合起来统称为I/O空间。 设备驱动程序要直接访问外设或其接口卡上的物理电路,这部分通常都是以寄存器的形式出现。外设寄存器称为I/O端口,通常包括:控制寄存器、状态寄存器和数据寄存器三
阅读全文
摘要:一、什么是下半部 中断是一个很霸道的东西,处理器一旦接收到中断,就会打断正在执行的代码,调用中断处理函数。如果在中断处理函数中没有禁止中断,该中断处理函数执行过程中仍有可能被其他中断打断。出于这样的原因,大家都希望中断处理函数执行得越快越好。 另外,中断上下文中不能阻塞,这也限制了中断上下文中能干的
阅读全文
摘要:如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略。在Linux早期,设备文件仅仅是是一些带有适当 的属性 集的普通文件,它由mknod命令创建,文件存放在/dev目录下。后来,采用了devfs,一个基于内核的动态设备文件系统,他首次出现在2.3.46 内核中
阅读全文
摘要:介绍关于本文档udev面向2.6以上的linux内核在用户空间提供动态的/dev下固定设备命名方案. 之前的/dev实现: devfs现在已被废弃,udev成为继任者. udev vsdevfs是一个敏感的谈话内容,在进行比较之前你应该读一下这个文档(http://kernel.org/pub/li
阅读全文
摘要:一、 什么是ioctlioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下:int ioctl(int fd, ind cmd, …);其中fd就是用户程序打开设备时使用open函数
阅读全文
摘要:信号量与自旋锁 内核同步措施 为了避免并发,防止竞争。内核提供了一组同步方法来提供对共享数据的保护。 我们的重点不是介绍这些方法的详细用法,而是强调为什么使用这些方法和它们之间的差别。 Linux 使用的同步机制可以说从2.0到2.6以来不断发展完善。从最初的原子操作,到后来的信号量,从大内核锁到今
阅读全文
摘要:1 系统调用意义 Linux内核中设置了一组用于实现系统功能的子程序,称为系统调用。系统调用和普通库函数调用非常相似,只是系统调用由操作系统核心提供,运行于核心态,而普通的函数调用由函数库或用户自己提供,运行于用户态。 一般的,进程是不能访问内核的。它不能访问内核所占内存空间也不能调用内核函数。CP
阅读全文
摘要:CPU通用寄存器作为CPU体系架构的一部分,不可或缺。通用寄存器是CPU的算术逻辑运算操作最直接,频繁的位置。对于RISC体系的CPU,算术逻辑运算甚至只能够操作CPU通用寄存器中的数据。我们的目的不在于详尽的说明每一种CPU体系的寄存器情况,而在于将常用而且在不同CPU体系下容易混淆的寄存器做一个
阅读全文
摘要:在这里,主要是要说明什么是寻址方式。以及每一种CPU为什么使用这样的寻址方式。在说明什么是寻址方式之前,首先需要了解指令的构成,或者说指令的编码格式。 指令编码格式 一条指令(指的是机器码)由操作码(opcode)和操作数(operand)构成。操作数可以是1个,也可以是多个,甚至可以没有。操作码则
阅读全文
摘要:Cache研究是转正答辩“MIPS BSP研究”中重要的一部分。只可惜当时时间紧,没有能够总结成文档。时隔将近一年,这次编写《CPU体系架构系列》,对于这一部分内容既是总结整理,又是温故知新。 概述 Cache是用来对内存数据的缓存。CPU要访问的数据在Cache中有缓存,称为“命中” (Hit),
阅读全文
摘要:DMA本来不属于CPU体系架构部分的内容,只因为在开发中经常要用到其相关的知识,所以这里就其基本概念、工作原理、常见问题做一个总结。 DMA概述 DMA的英文拼写是“Direct Memory Access”,汉语的意思就是直接内存访问。DMA既可以指内存和外设直接存取数据这种内存访问的计算机技术,
阅读全文
摘要:1.概述 简单比较了一下MIPS,PowerPC和ARM(这里只考虑32位版本的,MIPS64和PowerPC64不在此范围内)访问I/O的方式。首先这三种体系结构都使用存储器映射的I/O,都是32位物理地址空间(排除一些特殊的处理器,比如PowerPC E500 v2支持36位物理地址)。下面分别
阅读全文
摘要:1. 首先就是知道 ARM 状态下的通用寄存器和程序计数器,绿颜色的就是相应模式下的私有寄存器。 就是说程序一般运行在系统和用户模式下,使用的是系统和用户模式下的通用寄存器,当有异常发生时,比如 FIQ ,那么系统将切换到 FIQ 模式下,相应的就会采用 FIQ 模式下的寄存器,其中绿颜色的就是只在
阅读全文
摘要:dir 列文件名 deltree 删除目录树 cls 清屏 cd 改变当前目录copy 拷贝文件 diskcopy 复制磁盘 del 删除文件 format 格式化磁盘edit 文本编辑 mem 查看内存状况 md 建立子目录 move 移动文件、改目录名more 分屏显示 type 显示文件内容
阅读全文
摘要:bc是linux shell 命令下的很实用的计算器,加减乘除、进制转换, 还支持变量,条件比较操作符,逻辑操作符,判断语句和循环语句。因为bc本身是一个命令解释器,要退出它只要直接输入quit回车或者按Ctrl+D终止。a=1while(a++<100)sum+=asum50491.设定小数精度,
阅读全文
摘要:2011年7月27日,微软公司的DOS操作系统迎来了30岁生日。 DOS是历史上一个划时代的产品,标识着PC(个人电脑)的崛起和普及,对计算机行业影响深远。 只有了解DOS的历史,才能理解今天的计算机工业从何而来。下面就是我对这一段历史的介绍。 DOS的历史 1. 1974年4月,Intel推出8位
阅读全文
摘要:写这篇文章的缘起,是最近的一些观察和思考,借由这些观察和思考,我发现,这20年来,互联网这个行业虽然千变万化风起云涌,但其背后的一些大众心理、诉求和规律,却是不变以及可以捕捉到的。这很有趣。 并且,当你回过头去把这20年来主流的互联网产品的演变历史梳理完一遍之后,你可能也能够对未来3-5年的互联网将
阅读全文
摘要:编程的智慧 编程是一种创造性的工作,是一门艺术。精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的“智慧”,并不是号称一天瘦十斤的减肥 药,它并不能代替你自己的勤奋。然而由于软件行业喜欢标新立异,喜欢把简单的事情搞复杂,我希望这些文字能给迷惑中的人们指出一些正确的方向,让他们少走 一些弯路,基
阅读全文
摘要:程序语言的常见设计错误(1) - 片面追求短小 我经常以自己写“非常短小”的代码为豪。有一些人听了之后很赞赏,然后说他也很喜欢写短小的代码,接着就开始说 C 语言其实有很多巧妙的设计,可以让代码变得非常短小。然后我才发现,这些人所谓的“短小”跟我所说的“短小”完全不是一回事。 我的程序的“短小”是建
阅读全文
摘要:很多职场新人都谈到了工作经验的问题,似乎招聘公司不给你机会,你就没办法获得必要的工作经验,其实并不一定。 很多资料在网上都是可以找到的,只是看你具备不具备足够的信息收集与处理能力,而这个收集与处理信息的过程,也能极大的提升你的职业能力。 我一直有个感觉,在“模仿中成长,在创新中成功”,其实在真正的职
阅读全文
摘要:iTools可以从360软件管家下载安装,可以管理苹果手机及安卓手机。 iTunes可以从苹果官网下载安装,方便备份苹果手机资料,升级或降级iOS。
阅读全文
摘要:除了电容、电感外,处理器供电用料发生改变的还包括场效应管(MOSFET), 全称: 金属氧化物半导体场效应晶体管(Metal-Oxide -Semiconductor Field Effect Transistor), 一般被叫做MOS管。MOSFET应用于电流的放大,由于MOSFET的输入阻抗很高
阅读全文
摘要:下面对Verilog-2001新增特性进行详细说明,部分说明用实例进行解析。 l generate语句 Verilog- 2001添加了generate循环,允许产生module和primitive的多个实例化,同时也可以产生多个 variable,net,task,function,contino
阅读全文
摘要:在MultiSupplyMultiPower的90nm一下设计中,怎样对休眠区进行处理,是下面我想说的。 首先介绍个概念: Power Gating power gating 和 gating clock 还不是一回事,Gating Clock 是对clock端进行控制,在休眠区用Gate禁止clo
阅读全文
摘要:最近在调试250M的时序的时候,发现有段关键路径怎么调试也调试不成功,其中关键路径中有比较器和计数器, 以前采用如下方式写的 module counter( input clk ,clr , input [31:0] cin , output wire cout ) ; reg [31:0]cnt
阅读全文
摘要:1前言 协同仿真就是利用仿真工具提供的外部接口, 用其它程序设计语言(非HDL语言,如c语言等)编程,用辅助仿真工具进行仿真。Modelsim提供了与c语言的协同仿真接口。以Windows平台为 例,用户可通过modelsim提供的c语言接口函数编程,生成动态链接库,由modelsim调用这些动态链
阅读全文
摘要:1. 作为一种硬件描述语言,verilog可以直接描述硬件结构,也可以通过描述系统行为实现建模,其主要特点和功能有: *描述基本逻辑门和基本开关模型。 * 允许用户定义基元。 * 可以指定设计中的端口到端口的延时,路径时延和设计中的时序检查。 *可以采用多种方式进行建模,这些方式包括(1)顺序行为描
阅读全文
摘要:1 引言 每个设计者在进行Verilog建模时都会形成自己的设计风格,同一个电路设计,用Verilog描述可以写出许多逻辑上等价的模型,而大多数设计者考虑 的主要是代码书写上的方便和功能上是否正确,对设计的模型是否最优化结构却考虑甚少,这样不仅加重了逻辑综合的负担,影响综合效率,而且很可能会导致设计
阅读全文
摘要:1. event.triggered只会保持一个time_slot,在下一个time_slot将会丢失这个标记,如果不能保证在每一个time_slot都会检测到这个标志,那么将会丢失这个标志。 2. 必须保证在->event的同一个或之前的time_slot开始检测triggered. 3.virt
阅读全文
摘要:通用的HDL包括VHDL和verilog HDLHDL既可以用来design也可以用来test/confirm用HDL写出来的测试文件称为test bench被测试的模块成为device under test,简称DUT,既可以是behavioral级描述也可以是RTL级或gate级描述verilo
阅读全文
摘要:今天同学给我说FIR滤波器的时序对不上,他说乘法器延迟太大,就用左移了,可是仿真时左移还是2周期才能移完,移位寄存器代码如下: always @(posedge clk) begin a <= {in[8:0],0}; out <= a; end 看见这段代码之后我立即认识到这是通过两个周期完成的事
阅读全文
摘要:1.中间变量和输出变量都要用reg类型暂存一下,输出必须用reg寄存 2.对一个n'b(n>=2)的寄存器赋值时可以直接在声明时: reg [n-1:0] register=0; 在中间部分赋值时 register[7:0]=0 是不对的, 可以用 register[7:0]=8'hff 来赋值。
阅读全文
摘要:abstract view就如同近视眼看到的人 floorplan view就如同手术台上的人,这里的皮肤可以移植到那里 detailed view就是完全的你咯 reduced view就如同大夏天正午对着光拍摄人,就剩下像人一样的黑色剪影了。
阅读全文
摘要:在调用DesignWare时候,通常会有dw01_add #(a_width,bwidth)这一类语法出现,当时很疑惑这是为什么,现在才查到它的出处。怀疑是不是自己基本功不够扎实。查到的用法如下 1、module_name #( parameter1, parameter2) inst_name(
阅读全文
摘要:PR管的事情太多了,有几个难点,都要操心的, 操心多了人就累 。 1) library prepare, 不管是build lef还是BPV fram view, 总是有些问题, 不解决好,直接导致布线问题, 2) floorplan,这个操心的事情太多了, MACRO place, IO PLAC
阅读全文
摘要:1.高手和新手的区别是,高手能用最少的CODE完成同样的功能,而且保证coner最少,bug最少 2.功能能正确的话,再保证综合中没有问题,还有后面一系列的过程都没有问题,最终流片OK。 3.constraints中这些值是根据芯片的使用环境,测量或者估算的都不是随便给的,也不第一次寄生参数提取后拿
阅读全文
摘要:如何摆放macro (memory,PLL,ADC,DAC,特殊IO等)整体摆放时,应该考虑:1)PLL,ADC,DAC要按照IO的要求放在边上2)macro与IO的关系,相同功能的要靠近3)要根据芯片内部的数据流,按顺序摆放4)如果是IO limit设计,除PLL/ADC/DAC等与IO相连的ma
阅读全文
摘要:IO neck 和 core neck 一般称作 IO limited 和 core limited,IO limited :这个芯片的面积是因为IO个数限制(太多),而不得不做得那么大。core部分其实用不了那么大。这时面积计算就简化为每边IO个数的计算了。Core limited:芯片面积是有c
阅读全文
摘要:首先声明本文所讲的范围,在这篇文章中,是采用synopsys的设计流程,对数字电路进行功耗分析,生成功耗分析报告的流程。分析的对象是逻辑综合之后布局布线之前的功耗分析,以及布局布线之后的功耗分析。 Synopsys做功耗分析使用到的工具是:Primetime PX, Prime Rail。PTPX可
阅读全文
摘要:最近看见有同学为了增强手机GPS信号,把天线DIY到外面,拉了一条很长的天线,自己在怀疑这样是否符合天线设计原则,真的能使信号增强吗?于是找到下面这篇文章来学习一下。 1.RFID基本原理 RFID (radio frequency identification)是利用无线电波进行通信的一种自动识别
阅读全文
摘要:如期在做JND的硬件结构设计,对于DSP类的高速运算电路,目前有以下几点想说: 1. 首先觉得重中之重就是把Matlab/C算法验证的程序看好,数据流在心中一定要有准,大致预估模块怎样划分。能化简的运算在算法级别全部要化简。 2. 位宽设计简直就是悲催的事,不仅要在理论上算出每个变量/寄存器的值域,
阅读全文
摘要:1.inn/in inn命令仅复位CPU,通常建立连接后如果出现error的话,OCD Command Shell进入“ERR>”提示符状态;可以将CPU复位一下; in复位cpu,并执行仿真器中的寄存器脚本文件初始化外设寄存器; 2.ha 让CPU停止运行;OCD Command Shell进入“
阅读全文
摘要:我们的芯片5,6,7改成5,4,7 cpu内部挡cache访问的窗口,只挡cache读,不影响其他操作,因此汪文祥建议用一个窗口将寄存器空间全盖住,代码如下:下面代码是将0x10000000-0x1fffffff禁止取指代码。
阅读全文
摘要:1.通过ejtag抓到死机时的ra,假设为0x2b29640c 2.重启进程,ctrl+z 挂住,top命令查看进程号 3.cat /proc/进程号/map 查看进程的地址映射,假设找到0x2b211000-0x2b305000 ...lib_DRV.so,说明程序是在lib_DRV.so这个库里
阅读全文
摘要:写的挺不错的,但是还是有点困惑,就是关于分支预测技术和延迟槽的关系,等弄清楚后再写个总结吧。 分支延迟槽 (Branch delay slot),简单地说就是位于分支指令后面的一条指令,不管分支发生与否其总是被执行,而且位于分支延迟槽中的指令先于分支指令提交 (commit)。 801ea9d4:
阅读全文
摘要:(一)地址的概念 1) 物理地址:CPU地址总线传来的地址,由硬件电路控制其具体含义。物理地址中很大一部分是留给内存条中的内存的,但也常被映射到其他存储器上 (如显存、BIOS等)。在程序指令中的虚拟地址经过段映射和页面映射后,就生成了物理地址,这个物理地址被放到CPU的地址线上。 物理地址空间,一
阅读全文
摘要:bus error(core dumped) 总线错误 segmetation fault(core dumped)段错误产生原因: 当硬件告诉操作系统一个有问题的内存引用时,操作系统通过发送信号给有问题的进程进行交流。(信号是一种事件通知或一个软件中断)。普通进程一般对“总线错误”或“段错误”信号
阅读全文
摘要:Q1: 一些专门用途REG A: MIPS的通用寄存器中,按照编译器的规约,某些寄存器是做专门用途的,比如SP就是堆栈指针,ra是函数调用的返回地址,v0-v1通常用来保存函数调用非浮点数的返回值,a0-a3用来保存被调用函数的前四个参数等等。当然你也可以不按照这些规约编程,例如用$2存放堆栈指针,
阅读全文
摘要:摘要: 在介绍基于 ARM 体系的嵌入式系统启动流程的基础上,结合编程实例,详细、系统地叙述了 BSP (板级支持包)程序的各个组成部分及其具体设计方案,并就实际程序设计中的几个难点问题做了说明。 关键词: ARM BSP 嵌入式系统 微处理器 ARM公司32 位RISC 的CPU 开发领域不断取得
阅读全文
摘要:嵌入式处理器种类繁多,从8位、16位、32位到64位都有。本章介绍的嵌入式应用处理器主要有ARM、MIPS、PowerPC、X86、68K/Cold fire等,下面对这些处理器进行一些简单介绍。 MIPS是Microprocessor without Inter-locked Pipeline S
阅读全文
摘要:notdir,wildcard和patsubst是makefile中几个有用的函数,以前没留意过makefile中函数的用法,今天稍微看看~ 1、makefile里的函数makefile里的函数使用,和取变量的值类似,是以一个‘$’开始,然后是一个括号里面是函数名和需要的参数列表,多个变量用逗号隔开
阅读全文
摘要:以前在学ld的script时两个比较重要的概念,即指定一个输出section的lma和 vma(分别是load memory address和virtual memory address),vma的作用是很明显地,就是决定run time address嘛,但lma有什么用呢?恩,对运行在linux
阅读全文
摘要:在shell中,可以使用export修改当前进程的环境变量。例如, export PATH=.:$PATH就可以将当前路径加入可执行文件查找路径中,这样你就不要敲“./excutable” 来执行当前路径中的excutable。而只需要键入 “excutable” 就行了。 make可以执行shel
阅读全文
摘要:VMA与LMA [zz]2011-10-16 10:07两个地址都是虚拟地址。lma: 加载地址,如加载到RAM中等,在嵌入式中,有可能是在ROM中(这时LMA!=VMA)vma: 虚拟地址,就是程序运行时的地址,一般就是内存地址,如要把ROM中的数据加载到RAM中运行。 关于LMA 和 VMA:
阅读全文
摘要:本文介绍了基于嵌入式系统中的 OS 启动加载程序Boot Loader 的概念、软件设计的主要任务以及结构框架等。一、引言在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次:1. 引导加载程序。包括固化在固件(firmw
阅读全文
摘要:1ms的实现 hal_systimer_1ms = (hal_clock_cpu / 2000);除以2000的原因是: C0_COUNT 寄存器作为一个实时的定时器工作,每两个时钟周期增 1。所以hal_clock_cpu要准确,否则系统计时不准确. 系统时间的实现 在magus_sys_time
阅读全文
摘要:这种方法比较简单,就是利用uboot自带命令usbboot来实现启动,也算是最粗糙的一种。1.在配置文件中添加一系列有关USB的支持。uboot编译启动后输入usb startusbboot 0x30800000 0:1这里的0是usb设备0,1是第一分区当然,这里肯定会失败,因为usb stora
阅读全文
摘要:SYSCALL functions available in MARS Introduction A number of system services, mainly for input and output, are available for use by your MIPS program.
阅读全文
摘要:[cpp] view plaincopy #!/bin/bash cp -f $1/start.S . includeS=`grep "^#include.*\.S" $1/start.S` for i in $(echo $includeS | sed "s/#include //g" | tr
阅读全文
摘要:Linux 内核在启动的时候需要一些参数,以获得当前硬件的信息或者启动所需资源在内存中的位置等等。这些信息可以通过bootloader传递给内核,比较常见的 就是cmdline。以前我在启动内核的时候习惯性的通过uboot传递一个cmdline给内核,没有具体的分析这个过程。最近在分析内核启动过程的
阅读全文
摘要:/*a0 = addrt2 = *(addr)t4 for right shift*/LEAF(print_reg) li t0,UART0_BASE_ADDR li t1,10 lw t2,0(a0) li t4,32 1: sub t4,4 move t3,t2 srl t3,t4 and t3
阅读全文
摘要:串口输出东西太重要了,因此,再来仔细地看看串口调用的其它函数,这样做到一目了然,没有别的疑问在里面,就可以做到庖丁解牛游刃有余。像下面的函数:PRINTSTR(" CONFIG=")上面这句,就是输出一串字符到串里显示出来。其实它是一个宏定义,那么它是怎么样实现输出字符串到串口上的呢?立即去找到它的
阅读全文
摘要:本文详细地介绍了基于嵌入式系统中的 OS 启动加载程序 ―― Boot Loader 的概念、软件设计的主要任务以及结构框架等内容。 一、引言在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次:1. 引导加载程序。包括固
阅读全文
摘要:U-BOOT是一个LINUX下的工程,在编译之前必须已经安装对应体系结构的交叉编译环境,这里只针对ARM,编译器系列软件为arm-linux-*。 U-BOOT的下载地址: http://sourceforge.net/projects/u-boot我下载的是1.1.6版本,一开始在FTP上下载了一
阅读全文
摘要:BSS(Block Started by Symbol)这个词最初是UA-SAP汇编器(United Aircraft Symbolic Assembly Program)中的一个伪指令,用于为符号预留一块内存空间。该汇编器由美国联合航空公司于20世纪50年代中期为IBM 704大型机所开发。后来B
阅读全文
摘要:PMON在编译之后,生成的二进制文件其实也是可以看懂的。 每32位(4个byte)组成一句mips汇编指令, 比如:3c08bf22 lui t0,0xbf22 用UE(或者linux下的hexedit)打开gzrom.bin,可以看到是反着排列的,即为 22 bf 08 3c。 如果想看往一个地址
阅读全文
摘要:本文从以下几个方面粗浅地分析u-boot并移植到FS2410板上:1、u-boot工程的总体结构2、u-boot的流程、主要的数据结构、内存分配。3、u-boot的重要细节,主要分析流程中各函数的功能。4、基于FS2410板子的u-boot移植。实现了NOR Flash和NAND Flash启动,网
阅读全文
摘要:在文件 arch/arm/boot/compressed/head.S[2]中 start 为zImage 的起始点,部分代码如下:start:mov r7, r1mov r8, r2…...mov r0, r4mov r3, r7bl decompress_kernelb call_kernelc
阅读全文
摘要:为什么dram要刷新, sram不需要? 这个是由于ram的设计类型决定的,dram用了一个t和一个rc电路,导致电容毁漏电和缓慢放电。所以需要经常的刷新来保持数据。 DRAM,动态随机存取存储器,需要不断的刷新,才能保存数据。 而且是行列地址复用的,许多都有页模式。 SRAM,静态的随机存取存储器
阅读全文
摘要:Camera图像处理原理及实例分析 做为拍照手机的核心模块之一,camera sensor 效果的调整,涉及到众多的参数,如果对基本的光学原理及 sensor 软/硬件对图像处理的原理能有深入的理解和把握的话,对我们的工作将会起到事半功倍的效果。否则,缺乏了理论的指导,只能是凭感觉和经验去碰,往往无
阅读全文
摘要:c语言操作Mysql数据库,主要就是为了实现对数据库的增、删、改、查等操作,操作之前,得先连接数据库啊,而连接数据库主要有两种方法。一、使用mysql本身提供的API,在mysql的安装目录中可可以看到大量的头文件、lib文件、dll文件,这说明mysql原生就支持了c语言,操作起来相当简单。二、使
阅读全文
摘要:本文以Java TreeMap为例,从源代码层面,结合详细的图解,剥茧抽丝地讲解红黑树(Red-Black tree)的插入,删除以及由此产生的调整过程。 总体介绍 Java TreeMap实现了SortedMap接口,也就是说会按照key的大小顺序对Map中的元素进行排序,key大小的评判可以通过
阅读全文
摘要:之前看了很多写红黑树的博客,但是感觉都讲的不太清楚!没说这样操作如何使他保持平衡的,于是疑惑重重,就看不下去了,一次不经意看到一个人说维基百科的红黑树讲的好,我就随便点了一下一看——这下疯了~,怎么讲的这么好!可以说是把一个复杂的问题,讲得简单化!这太幸福了! 于是我就慢慢学会了!强烈推荐维基的这个
阅读全文
摘要:平衡二叉树定义(AVL):它或者是一颗空树,或者具有以下性质的二叉树:它的左子树和右子树的深度之差的绝对值不超过1,且它的左子树和右子树都是一颗平衡二叉树。 平衡因子(bf):结点的左子树的深度减去右子树的深度,那么显然-1<=bf<=1; 很显然,平衡二叉树是在二叉排序树(BST)上引入的,就是为
阅读全文
摘要:1.MATLAB的基本知识 1-1、基本运算与函数 在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如: >> (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答
阅读全文
摘要:Matlab绘图 强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Matlab还提供了直接对图形句柄进行操作的低层绘图操作。这类操作将图形的每个图形元素(如坐标轴、曲线
阅读全文