编写hello.c程序,代码如下:

#include

int main()

{

int i;

for(i=0;i<6;i++)

{

printf("i=%d\n",i);

printf("Hello,embedded linux\n");

}

return 0;

}

编译hello.c

linux-dist$">stuyou@UBUNTU:/usr/local/src/uClinux-dist$ sudo arm-elf-gcc -elf2flt -o hello hello.c

生成hello,hello.gdb

挂载romfs

拷贝hello

出错

cp: cannot create regular file `romfs_dir/bin/hello': Read-only file system

复制根文件系统到一个新到目录中

拷贝hello

生成新的romfs映像

修改skyeye.conf,使之使用新的映像

#skyeye config file sample

arch:arm

cpu: arm7tdmi

mach: at91

mem_bank: map=M, type=RW, addr=0x00000000, size=0x00004000

mem_bank: map=M, type=RW, addr=0x01000000, size=0x00400000

mem_bank: map=M, type=R, addr=0x01400000, size=0x00400000, file=./romfs_new.img

mem_bank: map=M, type=RW, addr=0x02000000, size=0x00400000

mem_bank: map=M, type=RW, addr=0x02400000, size=0x00008000

mem_bank: map=M, type=RW, addr=0x04000000, size=0x00400000

mem_bank: map=I, type=RW, addr=0xf0000000, size=0x10000000

#set nic info

#net: type=cs8900a, base=0xfffa0000, size=0x20,int=16, mac=0:4:3:2:1:f, ethmod=tuntap, hostip=10.0.0.1

net: type=cs8900a, ethmod=tuntap, hostip=10.0.0.1

uart: mod = term

#dbct: state=on

在skyeye上启动uClinux

得到如下启动信息:

Your elf file is little endian.

arch: arm

cpu info: armv3, arm7tdmi, 41007700, fff8ff00, 0

mach info: name at91, mach_init addr 0x80605a0

ethmod num=1, mac addr=0:0:0:0:0:0, hostip=10.0.0.1

failed to setup_module (name:net, type:cs8900a)

tapif_init: icotl TUNSETIFF erroruart_mod:0, desc_in:, desc_out:, converter:

SKYEYE: use arm7100 mmu ops

Loaded ROM ./romfs_new.img

exec file "linux"'s format is elf32-little.

load section .init: addr = 0x01000000 size = 0x0000a000.

load section .text: addr = 0x0100a000 size = 0x000dccd0.

load section .data: addr = 0x010e8000 size = 0x00009ce4.

not load section .bss: addr = 0x010f1d00 size = 0x000220a0 .

not load section .debug_abbrev: addr = 0x00000000 size = 0x0003d30e .

not load section .debug_info: addr = 0x00000000 size = 0x0186c1ff .

not load section .debug_line: addr = 0x00000000 size = 0x00304551 .

not load section .debug_pubnames: addr = 0x00000000 size = 0x0000c30b .

not load section .debug_aranges: addr = 0x00000000 size = 0x00002438 .

call armul_InitSymTable,kernel filename is linux.

start addr is set to 0x01000000 by exec file.

Linux version 2.4.31-uc0 (root@UBUNTU) (gcc version 2.95.3 20010315 (release)(ColdFire patches - 20010318 from http://fiddes.net/coldfire/)(uClinux XIP and shared lib patches from http://www.snapgear.com/)) #1 Thu May 13 15:02:46 CST 2010

Processor: Atmel AT91M40xxx revision 0

Architecture: EB01

On node 0 totalpages: 1024

zone(0): 0 pages.

zone(1): 1024 pages.

zone(2): 0 pages.

Kernel command line: root=/dev/rom0

Calibrating delay loop... 15.82 BogoMIPS

Memory: 4MB = 4MB total

Memory: 2936KB available (883K code, 180K data, 40K init)

Dentry cache hash table entries: 512 (order: 0, 4096 bytes)

Inode cache hash table entries: 512 (order: 0, 4096 bytes)

Mount cache hash table entries: 512 (order: 0, 4096 bytes)

Buffer cache hash table entries: 1024 (order: 0, 4096 bytes)

Page-cache hash table entries: 1024 (order: 0, 4096 bytes)

POSIX conformance testing by UNIFIX

Linux NET4.0 for Linux 2.4

Based upon Swansea University Computer Society NET3.039

Initializing RT netlink socket

Starting kswapd

Atmel USART driver version 0.99

ttyS0 at 0xfffd0000 (irq = 2) is a builtin Atmel APB USART

ttyS1 at 0xfffcc000 (irq = 3) is a builtin Atmel APB USART

Blkmem copyright 1998,1999 D. Jeff Dionne

Blkmem copyright 1998 Kenneth Albanowski

Blkmem 1 disk images:

0: 1400000-15123FF [VIRTUAL 1400000-15123FF] (RO)

RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize

NET4: Linux TCP/IP 1.0 for NET4.0

IP Protocols: ICMP, UDP, TCP

IP: routing cache hash table of 512 buckets, 4Kbytes

TCP: Hash tables configured (established 512 bind 512)

NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.

VFS: Mounted root (romfs filesystem) readonly.

Shell invoked to run file: /etc/rc

Command: hostname GDB-armulator

Command: /bin/expand /etc/ramfs.img /dev/ram0

Command: mount -t proc proc /proc

Command: mount -t ext2 /dev/ram0 /var

Command: mkdir /var/tmp

Command: mkdir /var/log

Command: mkdir /var/run

Command: mkdir /var/lock

Command: mkdir /var/empty

Command: cat /etc/motd

Welcome to

GDB/armulator support by

For further information check:

Execution Finished, Exiting

Sash command shell (version 1.1.1)

/>

切换到/bin目录下

/> cd bin

/bin> ls

bcdm

boa

busybox

dhcpcd

expand

false

gdbserver

hello

ifconfig

inetd

init

login

mount

mtdm

ping

reboot

route

sh

telnetd

thdm

true

umount

看到了hello,执行

/bin> ./hello

i=0

Hello,embedded linux

i=1

Hello,embedded linux

i=2

Hello,embedded linux

i=3

Hello,embedded linux

i=4

Hello,embedded linux

i=5

Hello,embedded linux

/bin>

得到了正确到执行结果。

完毕!!

uc for linux,在uClinux文件系统中增加应用程序相关推荐

  1. linux的根文件系统中的proc文件夹详解

    什么是proc文件系统    |linux /proc目录介绍|proc中文手册 proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为访问系统内核数据的操作提供接 ...

  2. linux文件服务有哪些,linux有哪些文件系统?_网站服务器运行维护,linux

    linux运维学什么知识?_网站服务器运行维护 linux运维需要学的知识:1.Linux基础知识.linux操作系统:2.bash脚本编程:3.文本处理命令:4.数据库:5.防火墙:6.监控工具:7 ...

  3. linux四种文件系统,Linux环境下常用的四种文件系统

    Linux环境下几种常用的文件系统 1.ext2 ext2是为解决ext文件系统的缺陷而设计的可扩展的.高性能的文件系统,又被称为二级扩展文件系统.它是Linux文件系统中使用最多的类型,并且在速度和 ...

  4. uboot通过u盘烧写linux内核,向Flash中烧写uboot和linux操作系统

    向Flash中烧写uboot和linux操作系统 2011年03月28日 向Flash中烧写uboot和linux操作系统 ====================================== ...

  5. linux u 驱动程序,在uClinux中增加自己的设备驱动程序

    驱动程序的使用可以按照两种方式编译,一种是静态编译进内核,另一种是编译成模块以供动态加载.由于 uClinux不支持模块动态加载,而且嵌入式Linux不能够象桌面Linux那样灵活的使用insmod/ ...

  6. Linux文件系统中的inode节点详细介绍

    一.inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统 ...

  7. 在内核中增加对yaffs文件系统的支持

    1.解压下载的内核源代码linux-2.6.30.4.tar.bz2.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-co ...

  8. linux系统中文件编程,Linux当中的文件系统

    1. 设备专用文件(设备文件) 设备专用文件与系统的某个设备相对应.在内核中,每种设备类型都有阈值向对应的设备驱动程序,用来处理设备的所有I/O请求.可以将设备划分为字符设备和块设备两种. 每个设备文 ...

  9. 【Linux 内核】Linux 操作系统结构 ( Linux 内核在操作系统中的层级 | Linux 内核子系统及关系 | 进程调度 | 内存管理 | 虚拟文件系统 | 网络管理 | 进程间通信 )

    文章目录 一.Linux 内核在操作系统中的层级 二.Linux 内核子系统 三.Linux 内核子系统之间的关系 一.Linux 内核在操作系统中的层级 Linux 内核 所在层级 : 整个计算机系 ...

最新文章

  1. 2022-2028年中国PET基膜行业市场发展规模及市场分析预测报告
  2. MySQL第9天:MySQL索引优化分析之join查询
  3. angular 字符串转换成数字_一文看懂Python列表、元组和字符串操作
  4. Qt学习笔记之文件处理
  5. Opencv实战(一) 视频人数统计(C++ Opencv)前后背景分离方法
  6. Win7下使用U盘安装linux Ubuntu16.04双系统图文教程
  7. shell 脚本初步,启动可执行 jar 文件
  8. python学习之旅(入门)
  9. 4K视频直播与点播系统的搭建与体验
  10. vue routes路由
  11. IBM X3650 M4 服务器安装 serverguide下载地址 右键用360游览器下载速度很快
  12. iOS xcode中生成和打包ipa文件的方法和步骤
  13. Golang使用 阿里云OSS存储
  14. MC33063电源啸叫
  15. VHDL实现矩阵键盘检测
  16. 金蝶系统登录显示云服务器繁忙,金蝶系统登录显示云服务器繁忙
  17. 【计算机视觉】图像拼接技术
  18. PTA --- 1032.挖掘机技术哪家强 (20 分)
  19. 一文读懂MACD技术指标
  20. 卷毛机器人符文_关于卷毛分享锤石天赋攻略

热门文章

  1. pandas隔行计算均值方差(相邻行或隔行的均值/方差)
  2. Java反射运行时_java反射获得运行时属性的值
  3. java 身份证地址提取籍贯_从身份证号码中提取信息,这些方法请收好
  4. P1540 机器翻译 模拟
  5. hibench测试出现问题--zookeeper
  6. C语言-05内存剖析
  7. rpm方式安装MySQL-5.6
  8. Verdi(debussy)中查看memory
  9. linux调整zram大小,ZRAM将在Linux5.1上看到更高的性能-它改变了默认的压缩器
  10. react封装函数_React 模式-将函数作为 children 传入和 render prop - 极客教程