自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(42)
  • 资源 (6)
  • 收藏
  • 关注

转载 浅谈Cache Memory

浅谈Cache Memory作者:smcdef 发布于:2019-5-2 21:14 分类:内存管理今天探究的主题是cache。我们围绕几个问题展开。为什么需要cache?如何判断一个数据在cache中是否命中?cache的种类有哪些,区别是什么?为什么需要cache memory在思考cache是什么之前我们首先先来思考第一个问题:我们的程序是如何运行起来的?我们应该知道程序是运...

2019-10-23 16:18:52 1081

转载 内存一致性模型

内存一致性模型作者:passerby 发布于:2019-3-24 14:22 分类:内存管理 早期的CPU是通过提高主频来提升CPU的性能,但是随着频率“红利”越来越困难的情况下,厂商开始用多核来提高CPU的计算能力。多核是指一个CPU里有多个核心,在同一时间一个CPU能够同时运行多个线程,通过这样提高CPU的并发能力。内存一致性模型(memory consist...

2019-10-23 15:40:35 2030

转载 KEIL MDK 查看代码量、RAM使用情况--RO-data、RW-data、ZI-data的解释

KEIL RVMDK编译后的信息 Program Size: Code=86496 RO-data=9064 RW-data=1452 ZI-data=16116   Code是代码占用的空间,RO-data是 Read Only 只读常量的大小,如const型,RW-data是(Read Write) 初始化了的可读写变量的大小,ZI-data是(Zero Initial

2013-09-16 15:04:14 390 1

转载 Vim剪切板

Vim剪切板用vim这么久了,始终也不知道怎么在vim中使用系统粘贴板,通常要在网上复制一段代码都是先gedit打开文件,中键粘贴后关闭,然后再用vim打开编辑,真的不爽;上次论坛上有人问到了怎么在vim中使用系统粘贴板,印象里回复很多,有好几页的回复却没有解决问题,今天实在受不了了又在网上找办法,竟意外地找到了,贴出来分享一下。如果只是想使用系统粘贴板的话直接在输入模式按Shift+

2013-09-09 11:35:06 241

转载 Vim命令合集

Vim命令合集命令历史以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。启动vim在命令行窗口中输入以下命令即可vim 直接启动vimvim filename 打开vim并创建名为filename的文件文件命令打开单个文件vim file同时打开多个文件vim file1 file2 file3 ...在vi

2013-09-09 11:32:03 223

转载 GPS NMEA-0183协议详解

NMEA协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine Electronics Associa-tion)制定的一套通讯协议。GPS接收机根据NMEA-0183协议的标准规范,将位置、速度等信息通过串口传送到PC机、PDA等设备。NMEA-0183协议是GPS接收机应当遵

2013-08-22 18:00:59 377

原创 uboot中start.s与lowlevel_init.s中绝对地址与相对地址

在看uboot的源码中,在启动阶段,有两段代码自己没有理解到位,现在记录下来。1. 在/cpu/arm920t/start.s中(部分):   adr     r0, _start    ldr      r1, _TEXT_BASE            @//0x3eff8000    cmp  r0, r1    blne  xxxx    ...2. 在

2013-07-09 12:07:02 317

转载 linux中 likely与unlikely

http://blog.csdn.net/tommy_wxie/article/details/7384641看内核时总遇到if(likely( )){}或是if(unlikely( ))这样的语句,最初不解其意,现在有所了解,所以也想介绍一下。likely() 与 unlikely()是内核(我看的是2.6.22.6版本,2.6的版本应该都有)中定义的两个宏。位于/include

2013-07-05 18:55:12 198

原创 __attribute__((packed))及gnu arm汇编与c调用extern 结构体技巧

今天在看bootloader-vboot的时候发现几行非常生疏的代码,后来整理后发现是一个非常好的技巧,可以让我更好的理解c语言和编译器的工作原理。并且可以在以后的项目中借鉴。发现的代码如下:    extern struct extern_test{    unsigned char        rad[12];    unsigned int        src;} _

2013-07-05 18:15:47 1044

原创 总结:S3C2440开发板中SDRAM \NOR FLASH\ NAND FLASH地址分配

这几天看了友善之臂的vboot的代码和s3c2440的一些spc。vboot代码中有几个地址一致让我很迷惑。* 当vboot将arm初始化ok,nand flash也初始化ok后,它就从0x60000地址开发拷贝长度0x500000长度的linux kernel了。这个0x60000我查了下,按照arm地址空间看它应该在bank0的位置,但是系统从nand启动之后,0x00000000-0x0

2013-07-05 15:06:51 551

原创 gcc volatile关键字作用-实验

volatile的本意是“易变的” 因为访问寄存器要比访问内存单元快的多,所以编译器一般都会作减少存取内存的优化,但有可能会读脏数据。当要求使用volatile声明变量值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。精确地说就是,遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问;如果不使用valatile,则编译

2013-07-04 18:37:24 443

转载 _attribute_((packed))

_attribute_((packed))1. __attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。这个功能是跟操作系统没关系,跟编译器有关,gcc编译器不是紧凑模式的,我在windows下,用vc的编译器也不是紧凑的,用tc的编译器就是紧凑的。例如:在TC下:struct my{ cha

2013-07-04 17:44:31 226

原创 GCC inline前缀的实验

书本上有很多关于inline前缀的文字理解,但是能看懂就是不能形象化的理解,我个人习惯做实验,之后这样才能加深理解。inline前缀的文字描述: 编译器会把inline修饰的函数的汇编代码复制到调用点, 而不是使用普通的调用方式, 以提高效率! inline是对编译器的建议,不是对编译器的命令。因为,不是所有的代码段都可以被展开,更不是所有的代码段都适宜被展开。有些太复杂的函数是不会

2013-07-03 19:34:06 321

转载 GNU内嵌汇编 ARM版

一、格式    asm volatile (“asm code”:output:input:changed);    //必须以‘;’结尾,不管有多长对C都只是一条语句        asm                 内嵌汇编关键字        volatile            告诉编译器不要优化内嵌汇编,如果想优化可以不加        ANSI C规范

2013-07-03 16:37:10 194

转载 学习U-BOOT时遇到FP寄存器

原文地址:http://blog.sina.com.cn/s/blog_5e99b41e01013ejk.html初始化帧指针寄存器 ,就是我们熟悉的R11寄存器。一般都没有用到。通常在C程序编译过程中,所有函数的局部变量被分配在一个连续的存储区中,一般这个存储区是在堆栈中,这个连续的存储区称为这个函数的存储“帧”,它是通过一个指针访问的。不同的CPU结构、不同的编译器使用

2013-07-02 18:39:23 384

转载 arm 汇编代码中引用c函数

对于ARM体系来说,不同语言撰写的函数之间相互调用(mix calls)遵循的是 ATPCS(ARM-Thumb Procedure Call Standard),ATPCS主要是定义了函数呼叫时参数的传递规则以及如何从函数返回,关于ATPCS的详细内容可以查看ADS1.2 Online Books ——Developer Guide的2.1节。这篇文档要讲的是 汇编代码中对C函数调用时如何进行参

2013-06-28 18:28:57 395

转载 arm汇编.LTORG

原文地址http://blog.csdn.net/yc550370460/article/details/8332185  RISC CPU是众多CPU中的一种. RISC是精简指令集的CPU. 也就是说, 它的指令系统一般都十分简洁.本文将要介绍的是RISCCPU中目前十分普遍的ARMCPU。目前很多的RISC CPU均是使用的32BIT长度的指令. 也就是每个指令长度为32BIT(注意

2013-06-27 19:23:06 366

转载 搭建交叉调试环境arm-linux-gdb与gdbserver

原文地址:http://blog.csdn.net/unbutun/article/details/6105790最近在学习ARM的汇编,但是ARM不像x86,可以很方便的调试。不过还好有虚拟机,而且还有GDB这样万能的调试器。Google了很久,又结合自己的实践,终于成功的调试了ARM的汇编,在此向对ARM嵌入式感兴趣的同学分享一下。首先说明需要的工具1.QEMU  这个模拟

2013-06-26 14:26:56 389

转载 溢出和进位

原文地址在   http://blog.sina.com.cn/s/blog_63f7ac2d0100mpvx.html溢出和进位  今天在学ARM的汇编指令的时候遇到进位和溢出的问题,于是在网上搜了一下,把搜到的结果帖出来分享下,是从别人那里直接copy过来了,对作者说声辛苦了,我是转载的!!对于无符号数来说,不存在溢出的问题,它的

2013-06-09 18:00:48 314

原创 contiki静态路由的添加和linux ipv6 双网口路由问题

今天项目遇到一个问题,现在想着比较简单,但是以前没有遇到过,现在记录下来。1.   contiki静态路由添加。      根据contiki项目文件中examples\er-rest-example\static-routing.c的例子,可以分析contiki是怎么添加静态路由的。大致的思路是,哪个网段的地址是via(通过)哪个地址发送出去,发送出去后,发送的目的地址所在设备会转发。

2013-06-06 12:45:24 927

转载 fedora9 下编译mysql移植到mini2440 linux平台的过程

原文在百度文库里面找到,在pc上编译的时候,这篇文章起了很大的作用,MySQL插件是在用qt时用到的,所以没有添加MySQL插件,然后添加了些自己在板子上配置过程中遇到的问题,与解决办法。(原创)Ubuntu下编译ARM平台QtEmbedded的MySQL和MySQL插件需要引用的同学请注明文章出处,谢谢   最近需要将一个程序移植到arm平台上,程序调用了MySQL数据库

2013-05-24 15:50:48 978

转载 APTCS 基本规则

原文地址:http://book.51cto.com/art/201008/217457.htm基本ATPCS规定了在子程序调用时的一些基本规则,包括下面四方面的内容。各寄存器的使用规则及其相应的名称。数据栈的使用规则。参数传递的规则。子程序结果的返回规则。1. 寄存器的使用规则及其相应的名称寄存器的使用必须满足下面的规则。子程序间通过寄存器R0~R3来

2013-05-17 15:13:03 277

原创 《自己动手写操作系统》中断处理分析

中断嵌套的过程发生时,那个中断先执行? 开始时没有理解清楚,《自己动手写操作系统》作者也没有明说,可能他自己理解了,觉得明白了。仔细看了代码后发现,中断的处理过程代码写的非常好,这个地方的处理方式总结之后,可以在以后的开发过程中借用。    有几点知识需要了解:    a. ret指令段跳转的时候只弹出栈里面的当前一个值,作为ip寄存器的值(CPU做的)。        iretd

2013-04-28 11:23:40 390

原创 《自己动手写操作系统》进程切换中TSS的作用理解

第6章1. 这一章有几个知识点一定要理解透。   a. esp的当前值是什么,指向什么地方。   b. push, pop两个命令是直接影响esp的值,无论esp指向哪里,pop都会从esp指向的地方取相应的字节填到寄存器里。push也同样。所以不要误认为只有esp指到栈才能做,所谓的栈,也是我们制定的一个地址空间而已。   c. 中断发生时,首先会在TSS记录的ESP0的地方得到

2013-04-26 12:01:50 883

原创 contiki-2.6 cc2530平台 添加coap应用重启问题

这段时间被contiki在添加coap应用后重启的问题给弄崩溃了,好在找到问题,并解决了,不然真不知道折腾到什么时候。    问题如下:当只编译contiki内核和tcp/ip协议栈运行时是没有问题的,但是只要添加coap应用程序之后,就出现问题了。cc2530会不断重启。over and over。真是让人崩溃,开始不知道从何下手,只能一部一部的打log加调试,但是log现实每次死机的地方还

2013-03-13 17:30:38 2397 14

原创 contiki-2.6多任务实现的核心技巧

contiki 操作系统在实现多任务的时候,并没有实现操作系统意义上的任务切换,也就是当前任务压栈出栈,上下文切换的机制,只是在实现了类似于状态机的多个c语言之间的“跳动”执行,但是比状态机的实现机制又要稍微复杂些,这种机制的实现可以作为以后开发的一种启示,所以记录下来,作为以后开发的一种架构的选择。    在contiki里添加任务的时候用了两个宏操作一个是PROCESS, 另一个是PROC

2012-12-10 13:29:21 1341

原创 contiki-2.6代码下载、编译、烧写、配置过程

1.按https://github.com/contiki-os/contiki/wiki/8051-Requirements搭建环境在搭建环境过程中,最重要的就是配置sdcc的过程。在安装sdcc时候出现 configure: error: boost library not found (boost/graph/adjacency_list.hpp)这是由于boost没

2012-12-05 11:01:37 3335 11

原创 Contiki2.6 在cc2530平台上的数据流发送、接收过程分析

Contiki2.6 数据流发送、接收过程分析      整个框架的了解是在没有实际的运行调试,仅仅根据代码编写的逻辑来了解的。由于整个系统涉及到了很多的硬件平台,所以这里面涉及到很多的宏开关,没法确定自己的思路是不是完全正确。    写的比较粗糙,细节部分需要根据代码来分析。1.    整体结构     入口函数: 关于contiki, cc2530平台的入口函数是在pa

2012-11-22 17:46:45 4139

原创 ltib-linux2.6.24.3-rt3 mysql4.1.12添加与启动配置

项目需要在ltib-linux上使用mysql,以前没有做过,现在将做的过程记录下来:    1. 在ltib上添加mysql包,按照文档添加命令为:./ltib -c; 然后将mysql选上。然后编译。    2. 目标板的启动方式,有四中启动方式:         2.1. ramdisk:  这个种方式是将操作系统、文件系统、还有一个usb配置文件,都放在了内存中,主要用

2012-10-19 11:19:30 683

原创 ucos-ii 信号量实现机制,timer处理

ucos-ii系统的timer(timer out)机制设计不知道是否合理,与rtk实时操作系统的比较感觉ucos-ii timer处理并不是很合理。    ucos-ii的timer队列并不是有专门的定时器来递减,而是每个task都有一个timer队列,而每个个task的timer 队列只有当自己所属的task空闲的时候,才会去处理。ucos-ii 的timer添加,想其它的实时内核一样

2012-10-10 19:06:14 1403

原创 ucos-II任务调度-随记

这两天项目有点多,其中一个是在ucos上实现数据采集功能,以前看过ucos的代码,但是断断续续的,也没有记录,现在基本忘的差不多了,所以把看代码后的一些思考和经验总结出来,供自己以后阅读。因为是循序渐进的,有很多不足,以后为修正,也希望网络上的大牛能指出不足。    看了ucos部分内核代码后,感觉相对于linux这些航母级的操作系统来说,ucos整个内核还是比较轻量级的。并且没有有复杂的文件

2012-10-09 13:44:09 2000

转载 VI下删除文本中的^M

地址:http://www.2cto.com/os/201203/125455.html关于回车与换行 很久以前,老式的电传打字机使用两个字符来另起新行。一个字符把滑动架移回首位 (称为回车,ASCII码为0D),另一个字符把纸上移一行 (称为换行,ASCII码为0A)。当计算机问世以后,存储器曾经非常昂贵。有些人就认定没必要用两个字符来表示行尾。UNIX 开发者决定他们可以用一个字符来表

2012-10-08 18:12:14 909

转载 自旋锁

来自:http://blog.csdn.net/yunsongice/article/details/5605264加锁(locking)是一种广泛应用的同步技术。当内核控制路径必须访问共享数据结构或进入临界区时,就需要为自己获取一把“锁”。由锁机制保护的资源非常类似于限制于房间内的资源,当某人进入房间时,就把门锁上。如果内核控制路径希望访问资源,就试图获取钥匙“打开门”。当且仅当资源空闲

2012-10-08 13:22:41 413

转载 深入理解linux互斥锁(mutex)

转载至:http://blog.csdn.net/feiyinzilgd/article/details/5816653锁机制,可以说是linux整个系统的精髓所在,linux内核都是围绕着同步在运转。在多进程和多线程编程中,锁起着极其重要的作用。我这里说的是互斥锁,其实是泛指linux中所有的锁机制。我在这里不讲如果创建锁,关于锁的创建,网上代码很多,我在这里就不多说了。我要谈一

2012-09-27 18:51:39 270

原创 linux completion机制的理解(zigbee 串口模块)

在研究zigbee串口通讯模块的时候看到串口模块的主要结构体有一个变量:...struct completion    open_done;...不明白干什么的,通过阅读代码和网上搜寻资料,整理如下:completion 机制的作用:作用:  虽然信号量可以用于实现同步,但往往可能会出现一些不好的结果。例如:当进程A分配了一个临时信号量变量,把它初始化为关闭的M

2012-09-27 17:51:34 432

转载 Linux内核同步原语之原子操作

http://blog.csdn.net/npy_lp/article/details/7262388避免对同一数据的并发访问(通常由中断、对称多处理器、内核抢占等引起)称为同步。  ——题记    内核源码:linux-2.6.38.8.tar.bz2    目标平台:ARM体系结构     原子操作确保对同一数据的“读取-修改-写入”操作在它的执行期间不会被打断,要么全

2012-09-27 15:24:05 347

转载 在linux中的likely和unlikely

在linux中判断语句经常会看到likely和unlikely,例如:if(likely(value)){}else{}简单从表面上看if(likely(value)) == if(value),if(unlikely(value)) == if(value)。也就是likely和unlikely是一样的,但是实际上执行是不同的,加likely的意识是value的值为真的可

2012-09-27 10:18:32 222

原创 linux中tty ldiscs怎么样与驱动关联

linux中tty ldiscs如果与上下层关联,以linux2.6.24.3-rt3为例。    前不久需要将现有平台的代码结构进行调整,内容之一就是,将ttyUSB0(usb-serial)的发送数据改到ttyS1(UART2),所以就花时间整理了下这方面的内容,时间仓促不足之处多多包涵。   本人所做的项目中整个tty架构分为三成:应用层,ldisc,驱动层。之间的关系如下:

2012-09-14 11:23:25 807

转载 谈EXPORT_SYMBOL使用

EXPORT_SYMBOL只出现在2.6内核中,在2.4内核默认的非static 函数和变量都会自动导入到kernel 空间的, 都不用EXPORT_SYMBOL() 做标记的。2.6就必须用EXPORT_SYMBOL() 来导出来(因为2.6默认不到处所有的符号)。 1、EXPORT_SYMBOL的作用是什么?EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用

2012-09-14 10:23:18 278

转载 Linux 激活网卡ifconfig eth1 up 和 ifup eth1 之间的差别

ifconfig是ELF二进制命令,只有root能用ifup是脚本,可以间接调用ifconfig ,一般用户也可以用,自动完成路由等一系列设置你可以试试看直接ifconfig up ,网络不能用的;ifup就可以 ifconfig up仅仅是active eth,不做其他任何事ifup要check eth ,active eth ,add route...,

2012-09-13 13:34:07 1801

stm32f207移好的ucos-ii操作系统

在cotex m3 stm32f207上移植好了ucos-ii操作系统,建立了一个task打印字符。

2012-10-23

五子棋源码 可以直接运行

五子棋源码 QT + C++ 运行平台linux

2011-02-19

51虚拟机和代码编辑器+文档

51虚拟机和51汇编的编辑器 加说明文档

2011-02-19

分析设计,格式,立项文档模板

分析设计文档模板 格式模板 立项文档模板

2010-06-24

加密技术-课堂老师给的

希望能有用-课堂老师给的资料-具体的希望您自己看了能够有用 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

2010-05-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除