
嵌入式知识
文章平均质量分 56
helmsgao
这个作者很懒,什么都没留下…
展开
-
Linux下动态库的生成和使用
一.动态库的基本概念1. 动态链接库是程序运行时加载的库,当动态链接库正确安装后,所有的程序都可以使用动态库来运行程序。动态链接库是目标文件的集合,目标文件在动态链接库中的组织方式是按照特殊方式形成的。库中函数和变量的地址是相对地址,不是绝对地址,其真实地址在调用动态库的程序加载时形成。2. 动态链接库的名称有别名(soname), 真名(realname)和链接名(linker原创 2012-10-17 11:50:24 · 747 阅读 · 0 评论 -
交叉编译工具链
dfgsdf如何来构建一个交叉编译工具链。在linux系统下,最常用的构建工具链的方法有三种:一种为分步构建交叉编译链,这种方法比较复杂,难度也大,即使从业多年的人员,也不能保证一次构建成功,所以需要足够的耐心和毅力,如果为了深入学习的目的,可以使用这种方法进行构建;第二种方法通过crosstool脚本工具来实现构建编译链,这种方法操作简单,出错率也比较低,所以建议大多原创 2014-11-04 13:00:11 · 1147 阅读 · 0 评论 -
glibc,uclibc,eglibc的简介
1.Glibcglibc = GNU C Library是GNU项(GNU Project)目,所实现的 C语言标准库(C standard library)。目前,常见的桌面和服务器中的GNU/Linux类的系统中,都是用的这套C语言标准库。其实现了常见的C库的函数,支持很多种系统平台,功能很全,但是也相对比较臃肿和庞大。2.uClibc一个小型的C语言标准库,主要用转载 2014-11-04 11:19:41 · 898 阅读 · 0 评论 -
linux的硬盘种类:hd&&sd
硬盘是hard disk所以如果我们的硬盘的原创 2014-11-05 15:06:12 · 6071 阅读 · 0 评论 -
linux的根目录的是怎么产生的?
一.linux启动流程:系统预处理程序-> GRUB-> Kernal ->initrd->system module系统预处理程序:未进入系统前的一些基本操作阶段GRUB:loder程序,引导管理程序,提供用户开机画面以及操作系统的菜单阶段Kernal:由GRUB协助载入linux kernal 此时并没有任何目录产生阶段initrd:由GRUB协助一并载入initrd文原创 2014-10-31 16:23:11 · 2262 阅读 · 0 评论 -
嵌入式的设备驱动层
嵌入式0按照软件使用的资源和原创 2014-11-05 16:09:55 · 1799 阅读 · 0 评论 -
UB内存池
什么是BU呢?其实就是单元块,它的作用就是为了实现对频繁申请内存的高效的管理,才实现的一种内存使用的方法,可以很大程度的减少内存碎片,同时也能缩减申请时间,实时的任务使用这种方法相当的高效。在实际的开发中,有时候我们会频繁的申请大小一定的内存,比如,64,128,256,512,1024,8192,那么我们就为这几种不同长度的内存分配UB块,根据实际需要,不同长度的分配不同数目的UB块,聚合在原创 2014-12-31 13:57:56 · 1970 阅读 · 0 评论 -
0x0D && 0x0A
今天在看代码时看到 0x0D和0x0A,那个是换行,那个是回车呢?说实话,不清楚,到网上搜一下吧,看到了,知道了! if (szCh == 0x0D) { continue; } if (szCh == 0x0A) { break; }原创 2014-11-26 08:37:00 · 6845 阅读 · 0 评论 -
vim哲学
http://segmentfault.com/blog/nightire/1190000000445598哲学一http://segmentfault.com/blog/nightire/1190000000445621哲学二http://segmentfault.com/blog/nightire/1190000000446738哲学三转载 2014-12-02 15:42:24 · 957 阅读 · 0 评论 -
C中的volatile用法
volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。 例如: volatile int i=10; int j = i; ... int k = i;转载 2015-04-05 19:01:07 · 626 阅读 · 0 评论 -
arm的堆栈结构
引言 这篇文章简要说说函数是怎么传入参数的,我们都知道,当一个函数调用使用少量参数(ARM上是少于等于4个)时,参数是通过寄存器进行传值(ARM上是通过r0,r1,r2,r3),而当参数多于4个时,会将多出的参数压入栈中进行传递(其实在函数调用过程中也会把r0,r1,r2,r3传递的参数压入栈),具体是什么实现的呢,我们看看。 函数栈 首先我们需要了解一下lin转载 2015-10-20 14:24:49 · 5685 阅读 · 1 评论 -
用size命令分析linux程序内存段的分布
用size命令分析linux程序内存段的分布Size命令的输出不包括stack和heap的部分。只包括文本段(text), 代码段(data),未初始化数据段(bss)三部分。1、文本段:包含程序的指令,它在程序的执行过程中一般不会改变。2、数据段:包含了经过初始化的全局变量和静态变量,以及他们的值。3、BSS段:包含未经初始化的全局变量和静态变量。转载 2016-01-15 11:08:17 · 1990 阅读 · 3 评论 -
内存越界问题查找方法
1.使用对比的方法,和没有故障的版本对,对比可能越界的内存2.如果定位到了越界的变量或者数组,尝试复现,然后查看内存,是否有变化,如果有确定越界的内容是否和猜想的一致。3.查看变量符号的内存位置,使用objdump -s (带调试信息的可执行程序)原创 2016-03-19 16:33:05 · 3674 阅读 · 0 评论 -
FTP的主动模式(PORT Mode)及被动模式(Passive Mode)
FTP的特殊性: 大多数的TCP服务是使用单个的连接,一般是客户向服务器的一个周知端口发起连接,然后使用这个连接进行通讯。但是,FTP协议却有所不同,它使用双向的多个连接,而且使用的端口很难预计。一般,FTP连接包括:1) 一个控制连接(control connection) 这个连接用于传递客户端的命令和服务器端对命令的响应。它使用服务器的21端口,生存期是整个FTP转载 2016-02-23 09:46:03 · 2367 阅读 · 1 评论 -
FTP的主动模式和被动模式
FTP的主动模式和被动模式文章来自:http://my.oschina.net/binny/blog/17469 最近做一个项目用到FTP和其它系统进行文件传输,结果在FTP网络连接的问题上花了很多时间,由于太久没搞多FTP,忘记了FTP不单单开放21端口,客户端采用不同连接模式对网络有不同。在此重温一下FTP的主动模式和被动模式的相关知识。 在使用FTP时转载 2016-02-23 14:53:10 · 1211 阅读 · 0 评论 -
ssh&telnet
NetCat网络工具:root@10.1.1.43:~# nc -h[v1.10-38]connect to somewhere: nc [-options] hostname port[s] [ports] ... listen for inbound: nc -l -p port [-options] [hostname] [port]options: -c shell comm原创 2016-05-13 09:09:16 · 434 阅读 · 0 评论 -
linux 静态库的链接 undefined reference
最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误:(.text+0x13): undefined reference to `func' 关于undefined reference这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助。1. 链接时缺失了相关目标文件(转载 2016-05-13 17:13:00 · 2173 阅读 · 0 评论 -
GNU Binutils工具简介
· as GNU的汇编器 作为 GNU Binutils工具集中最重要的工具之一。as工具主要用来将汇编语言编写的源程序转换成二进制形式的目标代码。Linux平台的标准汇编器是GAS,它是 GNU GCC编译器所依赖的后台汇编工具,通常包含在 Binutils软件包中。 · ld GNU的链接器 同as一样,ld也是GNU Binutils工具集中重要的工具,L原创 2014-11-04 12:22:48 · 1363 阅读 · 0 评论 -
linux系统启动知识学习总结
嵌入式学习总结Linux系统的一般启动过程通常划分为内核引导、内核启动和应用程序启动3个阶段:第一阶段是目标板硬件初始化,解压内核映像,再跳转到内核映像入口。这部分的工作一般由目标板的引导程序和内核映像的自引导程序完成。不同体系结构的目标板引导的方式和程序都有差异。第二阶段是内核的初始化,初始化设备驱动,挂接根文件系统。这里是Linux 内核通用的启动函数入口。所有体系原创 2014-11-20 09:06:29 · 886 阅读 · 0 评论 -
rootfs文件系统
rootfs ---> Root File System系统启动时,Uinx要在内存中开辟出一块特殊的文件系统rootfs来帮助真实的文件系统成功挂载上。原创 2014-10-30 15:34:20 · 1236 阅读 · 0 评论 -
valgrind--linux
工具——valgrind 可以定位程序内存方面的错误,于是下载下来,运行测试,效果很好,这个工具运行稳定,给出的结果也很清晰。 valgrind这款工具是运行在linux下的,可以用来定位c/c++程序中内存使用方面的错误。包括:内存泄漏、使用未初始化的内存、读/写已释放的内存、读/写内存越界、使用malloc/new/new[]和free/delete/delete[]原创 2012-07-05 17:19:05 · 1189 阅读 · 0 评论 -
嵌入式学习笔记(1)之ROM、RAM、DRAM、SRAM和FLASH的概念
比较什么是ROM、RAM、DRAM、SRAM和FLASH的区别什么是ROM、RAM、DRAM、SRAM和FLASH的区别 什么是ROM、RAM、DRAM、SRAM和FLASH的区别原创 2014-08-08 14:52:09 · 1558 阅读 · 0 评论 -
嵌入式系统的结构
嵌入式系统的结构如图5-1所示,为嵌入式系统硬件模型结构,此系统主要由微处理器MPU、外围电路,以及外设组成,微处理器为ARM嵌入式处理芯片,如ARM7TMDI系列及arm9系列微处理器,MPU为整个嵌入式系统 如图5-1所示,为嵌入式系统硬件模型结构,此系统主要由微处理器MPU、外围电路,以及外设组成,微处理器为ARM嵌入式处理芯片,如ARM7TMDI系转载 2014-08-08 15:10:05 · 4729 阅读 · 0 评论 -
32位嵌入式微处理器学习
1.ARM处理器是由英国的ARM公司设计的32位RISC处理器。原创 2014-08-14 14:48:50 · 908 阅读 · 0 评论 -
嵌入式开发知识点
Bootloader一般放在Flash的底端或者顶端,这要根据处理器的复位向量设置。要使Bootloader的入口位于处理器上电执行第一条指令的位置。接下来分配参数区,这里可以作为Bootloader的参数保存区域。再下来内核映像区。Bootloader引导Linux内核,就是要从这个地方把内核映像解压到RAM中去,然后跳转到内核映像入口执行。然后是根文件系统区。使用Ram原创 2014-10-31 14:43:06 · 712 阅读 · 0 评论 -
嵌入式系统 Boot Loader 技术内幕
本文详细地介绍了基于嵌入式系统中的 OS 启动加载程序 ―― Boot Loader 的概念、软件设计的主要任务以及结构框架等内容。http://www.ibm.com/developerworks/cn/linux/l-btloader/转载 2014-11-11 13:29:59 · 1006 阅读 · 0 评论 -
initramfs 简介,一个新的 initial RAM disks 模型
initramfs 简介,一个新的 initial RAM disks 模型译自: http://linuxdevices.com/articles/AT4017834659.html或点此查看原文by Rob Landley, TimeSys (Mar. 15, 2005)问题当 Linux 内核启动系统时,它必须找到并执行第一个用户程序,通常是 init。用户程序存在于转载 2014-11-11 15:42:02 · 2400 阅读 · 0 评论 -
内核zImage的制作(initramfs)
1.通过busybox制作一个我们需要的文件系统,但是没有压缩,所有的文件在目录~/armsource/ramfs下面。2.initramfs其实就是一个用gzip压缩的cpio文件。我们可以把initramfs直接集成到kernel里,也可以单独加载initramfs。在kernel源码的scripts目录下,有一个gen_initramfs_list.sh脚本,专门是用来生成initram原创 2014-11-12 12:12:15 · 3825 阅读 · 0 评论 -
How to use initramfs. (怎样使用initramfs)
Tech Tip: How to use initramfs.By: Rob LandleyLast time, we covered why initramfs was created: because it saves memory, gives the user more control over the boot process, and simplifies the kern转载 2014-11-12 12:17:25 · 1288 阅读 · 0 评论 -
利用qemu模拟嵌入式系统制作全过程
利用qemu模拟嵌入式系统制作全过程tinylab.org/using-qemu-simulation-inserts-the-type-system-to-produce-the-whole-process/Wen Pingbo目录1 利用qemu模拟嵌入式系统制作全过程1.1 零、环境搭建1.2 一、配置kernel1.3 二、通过busyb转载 2014-11-12 12:24:50 · 1379 阅读 · 0 评论 -
嵌入式系统中内存和flash的区别
在嵌入式系统中,文件系统和pc的存储介质有些不同。PC 机中常用的是硬盘、内存、光盘和 U 盘等; 嵌入式系统中文件系统常用的有 SDRAM, DDR-SDRAM ,NOR-FLASH ,NAND-FLASH ,SD 卡,U 盘和硬盘等,种类比PC 机要多,有些是两者都有使用;如内存, 在PC 机上称为内存,在 嵌入式系统中有多个名字,可以叫内存,也可以叫SDRAM 和DDR 。 内存(转载 2014-10-27 10:46:56 · 2483 阅读 · 0 评论 -
Linux系统中/dev/mtd与/dev/mtdblock的区别
MTD(memory technology device内存技术设备)是用于访问memory设备(ROM、flash)的Linux的子系统。MTD的主要目的是为了使新的memory设备的驱 动更加简单,为此它在硬件和上层之间提供了一个抽象的接口。MTD的所有源代码在/drivers/mtd子目录下。我将CFI接口的MTD设备分为四层 (从设备节点直到底层硬件驱动),这四层从上到下依次是:设备节点、转载 2014-10-27 10:17:04 · 865 阅读 · 0 评论 -
linux启动流程分析-内核解压缩过程
linux启动流程分析-内核解压缩过程 内核压缩和解压缩代码都在目录kernel/arch/arm/boot/compressed,编译完成后将产生vmlinux、head.o、misc.o、head-xscale.o、piggy.o这几个文件,head.o是内核的头部文件,负责初始设置;misc.o将主要负责内核的解压工作,它在head.o之后;head-xsca转载 2014-11-13 12:26:20 · 1494 阅读 · 0 评论 -
嵌入式软件工程师 面试题
1不按顺序(1)编写一个c语言程序,判断大端模式和小端模式。(2)嵌入式系统的任务状态。(3)编写一个宏,实现判断数组a元素的个数。(4)堆和栈的区别(5)static的作用(6)conse的作用(7)实时性linux系统和非实时性系统的区别(8)传值调用和传址调用(9)sizeof和strlen的用法(10)在arm9模式下,对数值的某一位进行置1和清0,(11)在arm9模式下,对一个地址为0转载 2014-10-27 09:24:11 · 1307 阅读 · 0 评论 -
Linux知识:为什么要用字符~来表示home目录
On Unix-like operating systems (including BSD, GNU/Linux and Mac OS X), tilde often indicates the current user's home directory: for example, if the current user's home directory is /home/bloggsj, t转载 2014-10-27 09:28:06 · 797 阅读 · 0 评论 -
解析linux根文件系统的挂载过程
一:前言前段时间在编译kernel的时候发现rootfs挂载不上。相同的root选项设置旧版的image却可以。为了彻底解决这个问题。研究了一下rootfs的挂载过程。特总结如下,希望能给这部份知识点比较迷茫的朋友一点帮助。二:rootfs的种类总的来说,rootfs分为两种:虚拟rootfs和真实rootfs.现在kernel的发展趋势是将更多的功能放到用户空间完转载 2014-10-30 15:37:31 · 781 阅读 · 0 评论 -
链表操作
收到原创 2015-06-13 01:08:23 · 559 阅读 · 0 评论