摘要:
gdb-6.6使用了autoconf/automake,因此通过设置configure脚本的--target,--host,--prefix参数就可以方便的移植到别的平台。--target指定编译后的文件针对的是什么目标板,一般设置为交叉编译器的前缀,比如--target=arm-linux, --target=mips-linux,--target=armv5-linux-uclibc, --t... 阅读全文
摘要:
使用gdbserver远程调试 1.默认crosstool交叉编译器没有自带gdbserver,需要自行编译 到GNU官方FTP下载,目前最新版的是gdb-6.7.1下载地址:http://ftp.gnu.org/gnu/gdb/ 注:若已有gdbserver,可以直接跳到步骤4 2.编译gdbserver编译GDB源码时只需要编译出gdbserver就可以了,交叉编译器自带arm-linux... 阅读全文
摘要:
使用gdbserver是在arm环境中调试程序的有效手段。经过单步调试可以更好的了解程序的执行。 需要的环境。 gdbserver:运行于arm平台。 armv4l-unknown-linux-gdb:运行于host平台,也就是开发环境(PC)。 使用步骤。 在arm上执行 gdbserver 10.191.2.152:5000 a.out // 输入 Process a.out created;... 阅读全文
摘要:
1. 安装标准的C开发环境,由于Linux安装默认是不安装的,所以需要先安装一下(如果已 经安装好的话,就可以免去这一步了): #sudo apt-get install gcc g++ libgcc1 libg++ make gdb2. 下载arm-linux-gcc-3.4.1.tar.bz2到任意的目录下,我把它下载到了我的个人文件夹 里 /home/wrq arm-linux-... 阅读全文
摘要:
undefined reference to '__ctype_b' 阅读全文
摘要:
wait是Object类的方法,sleep与yield都是Thread类的方法。wait调用的时候需要注意的是该方法是释放锁标志的,而sleep在调用的时候是紧紧抱着锁标志的,也就是等他完全执行完成了才可以让其他线程来访问的sleep 方法使当前运行中的线程睡眼一段时间,进入不可运行状态,这段时间的长短是由程序设定的,yield 方法使当前线程让出 CPU 占有权,但让出的时间是不可设定的。实际上... 阅读全文
摘要:
多线程中,线程需要暂停的原因多种多样,基本分为两大类,1是等待数据,2是系统资源紧张,停止计算以把资源让给其他线程.一般初学者会使用的方法就是使用SuspendThread和ResumeThread这两个API或者他们的包装函数进行操作,许多教材上都是这么说的,但这么作会带来及其严重的问题。 阅读全文
摘要:
名称:sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型:Int sscanf( string str, string fmt, mixed var1, mixed var2 ... );int scanf( const char *format [,argument]... ); 说明:sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者... 阅读全文
摘要:
//led.c#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/ioctl.h>int main(int argc, char **argv){int on;int led_no;int fd;/* 检查led控制的两个参数,如果没有参数输入则退出。*/if (... 阅读全文
摘要:
这两个功能的实现都是通过设置启动脚本来实现的。启动脚本的一般存放路径是 /etc/init.d/rcS (rcS即脚本文件),自启动应用程序一般放置于 /etc/rc.d/init.d 目录下。 我们需要用vi命令对rcS进行编辑,当然也可以通过其他方式对其进行覆盖。 在脚本中自启动应用程序示例:#各种服务程序/etc/rc.d/init.d/netd start #telnet/ftp 服务/e... 阅读全文
摘要:
最近在做一个移植UCOS-II的任务,遇到了semihosting的问题,现在把这个问题的解决办法总结一下。 Step 1 : 用#pragma import(__use_no_semihosting_swi)保证用户程序不调用semihostSWI; 此后,link时会有 Error :L6200E:Symbol __semihosting_swi_guard multiply defined ... 阅读全文
摘要:
与传统的4/8位单片机相比,ARM的性能和处理能力当然是遥遥领先的,但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了。本文旨在通过讨论系统程序设计中的几个基本方面,来说明基于ARM的嵌入式系统程序开发的一些特点,并提出和解决了一些常见的问题。 本文分成几个相对独立的专题陆续刊载。 (一) 嵌入式程序开发基本概念 (二) 系统的初始化过程 (三) 如何满足嵌入式系统的... 阅读全文
摘要:
Devfs,也叫设备文件系统(Device Filesystem),设计它的唯一目的就是提供一个新的(更理性的)方式管理通常位于 /dev 的所有块设备和字符设备。您也许知道,典型的 /dev 树包含数百个块特殊文件和字符特殊文件,它们全都在根文件系统上。每个特殊文件都可以让用户空间进程轻松地与内核设备实现交互。举例来说,通过对这些特殊文件执行操作,您的 X 服务器就能够访问视频硬件, fsck 可以执行文件系统检验, lpd 可以通过并行端口向打印机发送数据。 阅读全文
摘要:
//4led.c#include <linux/config.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/init.h>#include <linux/miscdevice.h>#include <linux/sched.h>#incl... 阅读全文
摘要:
2.4内核引入优点:设备初始化时在/dev下创建设备文件,卸载时候删除可以指定设备名,所有者,权位,可以不需要分配主设备号static devfs_handle_t devfs_handle;static int __init xxx_init(void){int ret;int i;ret = register_chrdev(XXX_MAJOR,DEVICE_NAME, &xxx_fop... 阅读全文