摘要:从bootm 命令讲起 1 找到linux的内核入口 Bootm命令通过读取uImage的头部0×40字节的信息,将uImage定位到正确的地址,同时找到linux的内核入口地址。 这个地方就涉及到uImage的头部0×40字节信息到底是什么的问题?uboot提供了mkimage命令去把0×40字节
阅读全文
07 2016 档案
摘要:uboot下的tftp下载功能是非常重要和常见的功能。但是偶尔有些特殊需求的人需要使用uboot的tftp具有上传功能。默认的uboot没有tftp上传功能,如果需要修改uboot代码。使用时键入第4个参数,则不同于3个参数的tftp下载功能。#tftp 50400000 xx.bin 10000T
阅读全文
摘要:U-boot的环境变量: bootcmd 和bootargs u-bootcmdbootcmd是uboot自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使用的那种参数。 现在我的bootcmd的参数设置为:bootcmd=nf
阅读全文
摘要:什么是ramfs?ramfs是空间规模动态变化的RAM文件系统。它非常简单,是用来实现Linux缓存机制(缓存page cache and dentry cache)的文件系统。通常情况下,Linux的所有文件在内存中都有缓存。需要读取的数据页从支撑存储设备(block device)中读取后,缓存
阅读全文
摘要:一直对Linux启动时挂载根文件系统的过程存在着很多疑问,今天在水木精华区找到了有用的资料,摘录如下: 1、Linux启动时,经过一系列初始化之后,需要mount 根文件系统,为最后运行init进程等做准备,mount 根文件系统有这么几种方式: 1)文件系统已经存在于硬盘(或者类似的设备)的某个分
阅读全文
摘要:http://www.linuxidc.com/Linux/2012-09/70510.htm 来源:Linux社区 作者:赵春江 uboot最主要的功能就是能够引导内核启动。本文就介绍如何实现该功能,并组成一个最简单的系统,这不仅要移植uboot,还要移植linux内核及创建一个根文件系统。 首先
阅读全文
摘要:关于编译powerpc linux的几个Image参考原文 http://blog.sina.com.cn/s/blog_86a30b0c0100wfzt.html 转载▼ 转载▼ PowerPC架构 Linux和ARM,X86等平台有些差异,PowerPC平台HW参数不是通过命令行方式传递到Lin
阅读全文
摘要:uImage的制作是使用的u-boot工具mkimage,build完u-boot后也会将mkimage build出來到/tools目录下,可以直接拿來用,它的作用就是在zImage的前面加上64个字节的头,让u-boot能够识别要加载内核的类型、加载地址等。 基本格式:mkimage -A ar
阅读全文
摘要:目录索引: 一、LibCurl基本编程框架 二、一些基本的函数 三、curl_easy_setopt函数部分选项介绍 四、curl_easy_perform 函数说明(error 状态码) 五、libcurl使用的HTTP消息头六、获取http应答头信息 七、多线程问题 八、什么时候libcurl无
阅读全文
摘要:转自: http://hi.baidu.com/hepeng597/item/5ba27e0b98bc8de3ff240de0 三次握手Three-way Handshake 一个虚拟连接的建立是通过三次握手来实现的 1. (B) --> [SYN] --> (A) 假如服务器A和客户机B通讯. 当
阅读全文
摘要:摘要: 本文给出IPv4与IPv6数据报格式示意图,并整理了各个字段含义,最后对比IPv4与IPv6数据报格式的区别。 一、IPv4数据报 图1 IPv4数据报格式版本号(version) 不同的IP协议版本使用不同的数据报格式。首部长度(HL, Internet Head Length) 确定IP
阅读全文
摘要:摘要: 本文讲述了TCP套接字编程模块,包括服务器端的创建套接字、绑定、监听、接受、读/写、终止连接,客户端的创建套接字、连接、读/写、终止连接。先给出实例,进而结合代码分析。 PS:本文权当复习套接字编程的读书笔记。 一、TCP套接字编程模型 同一台计算机上运行的进程可以利用管道、消息队列、信号量
阅读全文
摘要:摘要: 本文摘抄并整理了以太网相关理论知识,包括CSMA/CD协议机制及工作、LAN互连,详细分析了Ethernet II帧格式,最后给出Ethernet II帧实例。 一、以太网[1] 1.1 概述 以太网(Ethernet)是一种计算机局域网组网技术。IEEE制定的IEEE 802.3标准给出了
阅读全文
摘要:摘要: 本文简单介绍了网络层理论知识,详细讲解了IP数据报各个字段,并从Wireshark俘获分组中选取IP数据报进行分析,也阐述了分组和分片的区别。 一、IPv4数据报 网络层是处理端到端数据传输的最低层。网络层关注如何将分组从源端沿着网络路径送达目的端,期间可能需要经过许多跳中间路由器。即提供转
阅读全文
摘要:摘要: 本文简单介绍了DNS协议理论知识,给出URL解析步骤,详细讲述了DNS报文各个字段含义,并从Wireshark俘获分组中选取DNS相关报文进行分析。 一、概述 1.1 DNS 识别主机有两种方式:主机名、IP地址。前者便于记忆(如www.yahoo.com),但路由器很难处理(主机名长度不定
阅读全文
摘要:摘要: 本文剖析了浏览器输入URL到整个页面显示的整个过程,以百度首页为例,结合Wireshark俘获分组进行详细分析整个过程,从而更好地了解TCP/IP协议栈。 一、俘获分组 1.1 准备工作 (1) 清空浏览器缓存 首先清空Web浏览器的高速缓存,确保Web网页是从网络中获取,而不是从高速缓冲取
阅读全文
摘要:摘要: 本文简单介绍了TCP面向连接理论知识,详细讲述了TCP报文各个字段含义,并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析。 一、概述 TCP是面向连接的可靠传输协议,两个进程互发数据之前需要建立连接,这里的连接只不过是端系统中分配的一些缓存和状态变量,中间的分组交换机不维
阅读全文
摘要:摘要: 本文简单介绍了Web应用层协议理论知识,详细讲述了HTTP请求报文和响应报文各个字段含义,并从Wireshark俘获分组中选取HTTP相关报文进行分析。 一、概述 Web的应用层协议是超文本传输协议HTTP,HTTP协议由两部分程序实现:客户机程序、服务器程序,协议定义了这些报文的格式以及客
阅读全文
摘要:在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG.其中,对于我们日常的分析有用的就是前面的五个字段。它们的含义是:SYN表示建立连接,FIN表示关闭连接,ACK表示响应,PSH表示有 DATA数据传输,RST表示连接重置。其中,ACK是
阅读全文
摘要:Linux动态链接库的创建与使用1. 介绍 使用GNU的工具我们如何在Linux下创建自己的程序函数库?一个“程序函数库”简单的说就是一个文件包含了一些编译好的代码和数据,这些编译好的代码和数据可以在事后供其他的程序使用。程序函数库可以使整个程序更加模块化,更容易重新编译,而且更方便升级。 程序函数
阅读全文
摘要:程序往往会因为收到一些信号导致退出,但很多时候并不是我们想要的,比如往一个已经关闭的socket连接发送数据就会受到SIGPIPE,此信号默认会退出程序,但其实大部分时候我们并不想这么做,所以需要忽略一些信号。常见的有 SIGPIPE SIGTTOU SIGTTIN SIGTSTP
阅读全文
摘要:继续上一篇《 linux下so动态库一些不为人知的秘密(中) 》介绍so搜索路径,还有一个类似于-path,叫LD_RUN_PATH环境变量, 它也是把路径编译进可执行文件内,不同的是它只设置RPATH。 [stevenrao] $ g++ -o demo -L /tmp/ -ltmp main.c
阅读全文
摘要:上一篇(linux下so动态库一些不为人知的秘密(上))介绍了linux下so一些依赖问题,本篇将介绍linux的so路径搜索问题。 我们知道linux链接so有两种途径:显示和隐式。所谓显示就是程序主动调用dlopen打开相关so;这里需要补充的是,如果使用显示链接,上篇文章讨论的那些问题都不存在
阅读全文
摘要:linux 下有动态库和静态库,动态库以.so为扩展名,静态库以.a为扩展名。二者都使用广泛。本文主要讲动态库方面知识。 基本上每一个linux 程序都至少会有一个动态库,查看某个程序使用了那些动态库,使用ldd命令查看 # ldd /bin/ls linux-vdso.so.1 => (0x000
阅读全文
摘要:根据说明文档“How To Write Shared Libraries"介绍, 有四种方法: 1. 在方法声明定义时,加修饰:__attribute__((visibility("hidden"))) 就是说将不公开的函数都加上这个属性,没加的就是可见的 2. gcc 在链接时设置 -fvisib
阅读全文
摘要:说道“动态库版本兼容”,很多人头脑中首先蹦出的就是“Dll Hell”。啊,这曾经让人头疼的难题。时至今日,这个难题已经很好地解决了。 在进一步讨论之前来思考一个问题:Linux下为什么没有让人头痛的“DllHell”?回答这个问题,非常easy,因为——Linux下根本没有dll! 哈哈,当然这只
阅读全文
摘要:我们很多c程序在windows下是以dll形式展现的,在linux则是以so 形式展现的。 windows一般不会因为编译dll文件的编译器版本不同而出先dll文件不能执行。 但是linux下,不同版本内核的linux下编译的c程序,在其他版本的linux下就容易出现无法执行的问题。主要可能是支持程
阅读全文
摘要:objdump -tT libName.so | grep symbel symbolName nm -D libName.so | grep symbel symbolName 很多非常熟悉windows 进程依赖那个dll,使用depends,linux使用ldd命令。查看函数windows使用
阅读全文
摘要:linux下查看动态链接库依赖关系的命令 x86:ldd *.so arm:arm-linux-readelf -d *.so 实际例子:以项目中用到的库librtsp.so分析:lijun@ubuntu:~/workspace$ arm-hisiv100nptl-linux-ld -d librt
阅读全文
摘要:今天在帮同事查看一个问题时, 需要用到ldd, 于是就顺便看了一下ldd的实现. 好在ldd本身只是一个脚本, 而不是executable, 可以直接查看实现的代码.根据注释: 21 # This is the `ldd' command, which lists what shared libra
阅读全文
摘要:博文来自下面路径,转载请注明原出处: http://bigwhite.blogbus.com/logs/74568031.html 修改SVN中文件的可执行属性 - [开源世界] Tag:开源世界 Subversion 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://b
阅读全文
摘要:还是项目上发现的问题,要上传Android的源码项目。这里客户端是windows的机器, 测试后发现俩个问题。 1. 文件后缀是.so的文件默认上传不了。 2. 文件后缀是.sh的文件,上传后,再从服务器上下下来,文件的可执行权限就会丢失。说明在上传的时候文件的可执行权限没有上传。 问题1,解决方法
阅读全文
摘要:本地文件在commit到仓库之前若没有chmod +x 权限的话,那在svn仓库里的文件将会保持当前无可执行属性状态。 即使在本地chmod +x filename 之后,再提交到仓库也是没有用的。check out到其他目录的时候,文件仍然没有可执行权限。 需要使用svn 设置文件属性,如下 li
阅读全文
摘要:一.前言嵌入式Linux系统中,应用开发过程中,很多情况下,用户需要对一个应用程序进行反复调试,特别是复杂的程序。采用GDB方法调试,由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采用gdb+gdbserver的方式进行调试。 Gdbserver在目标系统中运行,gdb则在宿主机上
阅读全文
摘要:安装GDB和GDBSERVER 转自http://www.360doc.com/content/10/0407/17/155970_21971613.shtml 把GDBSERVER装入文件系统 转自http://www.arm9home.net/read.php?tid-1396.html 在mi
阅读全文
摘要:PC主机:Ubuntu 10.4 目标板:TQ2440开发板,linux内核2.6.30 NOTE:为了使用gdb进行调试,强烈建议使用nfs服务,否则调试会非常麻烦。 使用nfs服务可以参考:S3C2440挂载NFS文件系统 1. 概述 所谓远程调试,就是开发板上建立一个gdb服务端,同时待调试的
阅读全文
摘要:/********************************************************************* * Author : Samson * Date : 01/30/2015 * Test platform: * 3.13.0-24-generic * GN
阅读全文
摘要:此处所讲的是基于gdb和gdbsever的远程调试方法。环境为:PC机:win7、虚拟机:10.04、下位机:飞嵌TE2440开发板。 嵌入式linux应用程序的开发一般都是在linux里面编写好代码,并用交叉编译器arm-linux-gcc编译好之后再下载到板子上运行。如果建立了远程调试(能够在P
阅读全文
摘要:交叉编译gdb和gdbserver 1、下载gdb:下载地址为:http://ftp.gnu.org/gnu/gdb/按照一般的想法,最新版本越好,因此下载7.2这个版本。当然,凡事无绝对。我们以gdb-7.2.tar.bz2 这个文件为例。2、解压缩: 注:小技巧:Linux下一般压缩文件后缀为.
阅读全文