随笔分类 -  Linux

说说ARM汇编的LDR伪指令
摘要:我们知道ARM CPU中有一条被广泛使用的指令LDR,它主要是用来从存储器(确切地说是地址空间)中装载数据到通用寄存器。但不论是ARMASM还是GNU ARM AS,都提供了一条与之同名的伪指令LDR,而在实际中使用该伪指令的情况也较多,那他们有什么不同呢?下面我谈谈我的理解。 由于我使用GNU工具链,所以以下的内容都以GNU AS的ARM语法为准。 LDR伪指令的语法形式如下: LDR , = 这个常量表达式中可以包含Label(在ARM汇编中Label会在连接时解释为一个常数),且其中的常数前不加#符号。 范例demo.s:.equ STACK_BASE, 0×0c002000. 阅读全文

posted @ 2012-07-10 23:00 hicjiajia 阅读(835) 评论(0) 推荐(0) 编辑

嵌入式根文件系统的移植和制作详解
摘要:理论上说一个嵌入式设备如果内核能够运行起来,且不需要运行用户进程的话,是不需要文件系统的,文件系统简单的说就是一种目录结构,由于 linux操作系统的设备在系统中是以文件的形式存在,将这些文件进行分类管理以及提供和内核交互的接口,就形成一定的目录结构也就是文件系统,文件系统是为用户反映系统的一种形式,为用户提供一个检测控制系统的接口。 根文件系统,我认为根文件系统就是一种特殊的文件系统,那么根文件系统和普通的文件系统有什么区别呢?由于根文件系统是内核启动时挂在的第一个文件系统,那么根文件系统就要包括Linux启动时所必须的目录和关键性的文件,例如Linux启动时都需要有init目录下的相关文. 阅读全文

posted @ 2012-07-10 17:08 hicjiajia 阅读(10334) 评论(1) 推荐(0) 编辑

从ramdisk根文件系统启动Linux
摘要:http://blog.sina.com.cn/s/blog_6634dffb0100iiy0.html今天做了个试验,让Linux2.6.29.4从ramdisk根文件系统启动成功,总结一下。其中涉及的内容较多,很多东西不再详述,如需深入研究请查阅相关资料(百度或谷歌一下一大堆)。开发环境:Fedora 9交叉编译工具链:arm-linux-gcc 4.3.2 with EABI嵌入式Linux内核版本:2.6.29.4-FriendlyARM。昨天写贴子的时候具体记不清了,今天起来启动开发板用uname -r查一下,就是叫做2.6.29.4-FriendlyARM,帖子已经改好了。本文就是 阅读全文

posted @ 2012-07-10 17:08 hicjiajia 阅读(13433) 评论(0) 推荐(1) 编辑

Linux中的Ramdisk和Initrd
摘要:Ramdisk简介先简单介绍一下ramdisk,Ramdisk是虚拟于RAM中的盘(Disk)。对于用户来说,能把RAM disk和通常的硬盘分区(如/dev/hda1)同等对待来使用,例如:redice # mkfs.ext2 /dev/ram0mke2fs 1.38 (30-Jun-2005)Filesystem label=OS type: LinuxBlock size=1024 (log=0)Fragment size=1024 (log=0)2048 inodes, 8192 blocks409 blocks (4.99%) reserved for the super userF 阅读全文

posted @ 2012-07-10 17:07 hicjiajia 阅读(1680) 评论(0) 推荐(0) 编辑

Ubuntu下配置tftp服务和NFS服务
摘要:原文:http://www.cnblogs.com/shenhaocn/archive/2011/03/13/1983042.html配置tftp方法一:(推荐方法)Ubuntu10.04 测试通过1.安装TFTP软件sudo apt-get install tftp-hpa tftpd-hpatftp-hpa是客户端,tftpd-hpa是服务器端2.建立tftpboot目录,作为服务器的目录sudo mkdir ~/tftpboot释放权限:(服务器目录,需要设置权限为777,chomd 777)sudo chmod 777 ~/tftpboot3.配置TFTP服务器sudo gedit / 阅读全文

posted @ 2012-07-09 21:18 hicjiajia 阅读(4303) 评论(0) 推荐(0) 编辑

Ubuntu 启动NFS Server
摘要:安装:#sudo apt-get install nfs-common#sudo apt-get install nfs-kernel-server修改/etc/exports文件,加入如下几行:格式: [共享目录] [主机名或IP](参数,参数) /home/armnfs 192.168.1.6(rw)这样解释一下:armnfs是我在home下新建的目录,用来存放目标文件系统的,也就是共享目录。共享给谁呢?就是后面那个IP地址了。它拥有的权限是 可读可写。启动NFS:#/etc/init.d/nfs-kernel-server start另外两个有用的参数是stop,res... 阅读全文

posted @ 2012-07-09 20:34 hicjiajia 阅读(3143) 评论(0) 推荐(0) 编辑

Linux 服务
摘要:关于服务的开始/关闭,可用setup命令,但Ubuntu没有,可以用下面的命令搞定,试试.......sudo apt-get install sysv-rc-conf sudo sysv-rc-conf acpi-support 这个是关于电源支持的默认是1,2,3,4,5下启动,我认为你可以把它调整到s级别。 acpid acpi的守护程序,默认是2-5开启,我认为可以不用管。 alsa alsa声音子系统,应该不用开启它。 alsa-utils 这个服务似乎取代了alsa,所以开启这个就可以了,我在S级别开启它。 anacron ... 阅读全文

posted @ 2012-07-09 20:20 hicjiajia 阅读(402) 评论(0) 推荐(0) 编辑

SELinux 入门
摘要:原文地址:http://linuxtoy.org/archives/selinux-introduction.html几乎可以肯定每个人都听说过 SELinux (更准确的说,尝试关闭过),甚至某些过往的经验让您对 SELinux 产生了偏见。不过随着日益增长的 0-day 安全漏洞,或许现在是时候去了解下这个在 Linux 内核中已经有8年历史的强制性访问控制系统(MAC)了。SELinux 与强制访问控制系统SELinux 全称 Security Enhanced Linux (安全强化 Linux),是 MAC (Mandatory Access Control,强制访问控制系统)的一个 阅读全文

posted @ 2012-06-03 21:52 hicjiajia 阅读(1244) 评论(0) 推荐(0) 编辑

GDT 与 LDT
摘要:很长时间没碰组成原理和操作系统,忘得差不多了,今天学内核需要一些基础知识,搜了些文章补习一下,这篇讲描述符表的文章比较不错:原文地址:http://blog.csdn.net/billpig/article/details/5833980另外,在oldlinux上有一篇帖子也是讨论这个的,看完上面的文章再看这篇帖子就比较明了了:原文地址:http://www.oldlinux.org/oldlinux/viewthread.php?tid=9420保护模式下的段寄存器 由 16位的选择器 与 64位的段描述符寄存器 构成段描述符寄存器 : 存储段描述符选择器 : 存储段描述符的索引P... 阅读全文

posted @ 2012-05-25 22:19 hicjiajia 阅读(29046) 评论(3) 推荐(0) 编辑

Linux共享内存(二)
摘要:Linux共享内存编程实例原文链接:http://blog.csdn.net/pcliuguangtao/article/details/6526119/*共享内存允许两个或多个进程进程共享同一块内存(这块内存会映射到各个进程自己独立的地址空间) 从而使得这些进程可以相互通信。 在GNU/Linux中所有的进程都有唯一的虚拟地址空间,而共享内存应用编程接口API允许一个进程使 用公共内存区段。但是对内存的共享访问其复杂度也相应增加。共享内存的优点是简易性。 使用消息队列时,一个进程要向队列中写入消息,这要引起从用户地址空间向内核地址空间的一次复制, 同样一个进程进行消息读取时也要进行... 阅读全文

posted @ 2012-05-17 17:55 hicjiajia 阅读(22628) 评论(0) 推荐(0) 编辑

Linux共享内存(一)
摘要:Linux系统编程我一直看 <GNU/LINUX编程指南>,只是讲的太简单了,通常是书和网络上的资料结合着来掌握才比较全面 .在掌握了书上的内容后,再来都其他资料 .原文链接http://www.cnblogs.com/skyme/archive/2011/01/04/1925404.html共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。在/proc/sys/kernel/目录下,记录着共享内存的一些限制,如一个共享内存区的最大字节数shmmax,系统范围内最大共享内存区标识符数shmmni等,可以手工对其调整,但不推荐这样做。一、应用共享内存的使用,主要有以下几 阅读全文

posted @ 2012-05-17 17:54 hicjiajia 阅读(17041) 评论(0) 推荐(0) 编辑

Ubuntu WINE QQ 2009教程
摘要:一、安装好 Wine 1.2(1.2 版安装好就支持中文界面的了)直接在新立得软件包中搜索就可以了,里面最新的版本是1.2.2,虽然不是最新,但够用了.二、下载并把 winetricks 放在用户根目录:http://www.kegel.com/wine/winetricks或者直接用命令:wgethttp://www.kegel.com/wine/winetricks三、为 QQ 安装需要的函数库,在终端直接用下面的命令(包括 IE6 和 Flash插件):sh winetricks msxml3 gdiplus riched20 riched30 ie6 vcrun6 vcrun2005s 阅读全文

posted @ 2011-01-27 13:52 hicjiajia 阅读(2206) 评论(0) 推荐(0) 编辑

在Linux下创建函数库
摘要:函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。  程序1: hello.h以下是代码片段:[代码]  程序2: hello.c以下是代码片段:[代码]  程序3: main.c以下是代码片段:[代码]  无论动态库还是静态库都需要用到.o文件来生成,先编译生成.o文件。[代码]  1:创建静态库  静态库文件名的命名规范是以lib为前缀,紧接着跟静态库名,扩展名为.a。例如:我们将创建的静态库名为myhello,则静态库文件名就是libm 阅读全文

posted @ 2011-01-27 11:55 hicjiajia 阅读(365) 评论(0) 推荐(0) 编辑

linux 目录详解
摘要:根文件系统一般应该比较小,因为包括严格的文件和一个小的不经常改变的文件系统不容易损坏。损坏的根文件系统一般意味着除非用特定的方法(例如从软盘)系统无法引导,所以不应该冒这个险。根目录一般不含任何文件,除了可能的标准的系统引导映象,通常叫/vmlinuz 。所有其他文件在根文件系统的子目录中。/bin引导启动所需的命令或普通用户可能用的命令(可能在引导启动后)。/sbin类似/bin ,但不给普通用户使用,虽然如果必要且允许时可以使用。/etc特定机器的配置文件。/rootroot用户的家目录。/lib根文件系统上的程序所需的共享库。/lib/modules核心可加载模块,特别是那些恢复损坏系统 阅读全文

posted @ 2011-01-20 18:45 hicjiajia 阅读(1633) 评论(0) 推荐(0) 编辑

修改Linux中SSH默认端口22
摘要:有时候,我们需要把Linux中SSH默认端口22修改为其他,方法有以下几种:  方法 1:  01假如要改SSH的默认端口(22),那么你只要修改:/etc/ssh/sshd_config中Port 22,这里把22改成自己要设的端口就行了,不过千万别设和现已有的端口相同哦,以防造成未知后果。  02假如要限制SSH登陆的IP,那么可以如下做:  先:修改/etc/hosts.deny,在其中加入sshd:ALL  然后:修改:/etc/hosts.allow,在其中进行如下设置:sshd:192.168.0.241  这样就可以限制只有192.168.0.241的IP通过SSH登陆上LINU 阅读全文

posted @ 2011-01-20 18:38 hicjiajia 阅读(941) 评论(0) 推荐(0) 编辑

嵌入式Linux学习笔记
摘要:一 嵌入式系统定义:应用于特定环境的硬件体系。二 两样非常重要的能力:1. 掌握各种新概念的能力2. 调试的能力( 包括软件, 硬件 )三 需要的基础知识:1. 操作系统理论基础2. 数据结构3. C,C++编程语言4. 汇编语言5. Linux基础能力6. 单片机基础四 结构框架:1. bootloader( 作用:a. 初始化硬件 b. 引导操作系统 )2. kernel3. 文件系统它们都置于flash中。五 flash六大分区:1. boot --- 引导区2. boot param --- 引导参数区3. my application --- 用户程序区4. kernel -- 阅读全文

posted @ 2011-01-20 14:05 hicjiajia 阅读(3235) 评论(0) 推荐(0) 编辑

Android权限说明
摘要:程序执行需要读取到安全敏感项必需在Androidmanifest.xml中声明相关权限请求, 各种权限说明如下:Android.permission.ACCESS_CHECKIN_PROPERTIES  允许读写访问”properties”表在checkin数据库中,改值可以修改上传( Allows read/write access to the “properties” table in the checkin database, to change values that get uploaded)Android.permission.ACCESS_COARSE_LOCATION  允许 阅读全文

posted @ 2011-01-20 14:00 hicjiajia 阅读(475) 评论(0) 推荐(0) 编辑

Linux下Fork与Exec使用
摘要:一、引言  对于没有接触过Unix/Linux操作系统的人来说,fork是最难理解的概念之一:它执行一次却返回两个值。fork函数是Unix系统最杰出的成就之一,它是七十年代UNIX早期的开发者经过长期在理论和实践上的艰苦探索后取得的成果,一方面,它使操作系统在进程管理上付出了最小的代价,另一方面,又为程序员提供了一个简洁明了的多进程方法。与DOS和早期的Windows不同,Unix/Linux系统是真正实现多任务操作的系统,可以说,不使用多进程编程,就不能算是真正的Linux环境下编程。  多线程程序设计的概念早在六十年代就被提出,但直到八十年代中期,Unix系统中才引入多线程机制,如今,由 阅读全文

posted @ 2011-01-20 13:51 hicjiajia 阅读(57404) 评论(8) 推荐(12) 编辑

GCC 加工程序的过程
摘要:GCC生产的过程在Linux下进行C语言编程,必然要采用GNU GCC来编译C源代码生成可执行程序。一、GCC快速入门Gcc指令的一般格式为:Gcc [选项] 要编译的文件 [选项] [目标文件]其中,目标文件可缺省,Gcc默认生成可执行的文件名为:编译文件.out我们来看一下经典入门程序"Hello World!"# vi hello.c#include <stdlib.h>#inc... 阅读全文

posted @ 2010-08-27 13:04 hicjiajia 阅读(591) 评论(0) 推荐(1) 编辑