ARM
文章平均质量分 62
zhengqijun_
You can do it! No can no BB!
展开
-
C语言与汇编语言混合编程
C语言与汇编语言混合编程1、在C / C++程序中使用内嵌的汇编指令在ARM C语言程序中,使用关键字__asm来标识一段汇编指令程序。程序格式如下所示:__asm ;注意是两个下划线!{ 汇编语言程序 ~~~~~~~~~~ 汇编语言程序}其中一条指令占据多行的时候,要使用续行符号( \ )。必须小心使用物理寄存器,如R0 ~ R3、SP、LR和CPSR原创 2016-12-25 18:49:17 · 13835 阅读 · 0 评论 -
Linux内核启动出错can't get kernel image
开发板:mini2440u-boot:2010.03内核:Linux1、下载uImage到0x30008000[u-boot@MINI2440]# tftp 30008000 uImagedm9000 i/o: 0x20000300, id: 0x90000a46 DM9000: running in 16 bit modeMAC: 08:08:11:18:12:27原创 2017-05-13 22:47:55 · 18871 阅读 · 1 评论 -
Linux 内核调试指南[转载]
linux内核调试指南一些前言作者前言知识从哪里来为什么撰写本文档为什么需要汇编级调试***第一部分:基础知识***总纲:内核世界的陷阱源码阅读的陷阱代码调试的陷阱原理理解的陷阱建立调试环境发行版的选择和安装安装交叉编译工具bin工具集的使用qemu的使用转载 2017-05-14 23:49:38 · 2993 阅读 · 0 评论 -
uboot目录结构[转载]
本来是开始分析uboot代码的,但是无论是教材还是网上资料都对于我最新下的 uboot原码结构不同,对于还是小白的我不容易找到相应的文件,下面是uboot版本中文件组织结构的改变,,,,,u-boot版本情况网站:http://ftp.denx.de/pub/u-boot/1、版本号变化:2008年8月及以前按版本号命名:u-boot-1.3.4.tar.b转载 2017-05-15 14:48:30 · 317 阅读 · 0 评论 -
系统启动出现:Partially written block XXX detected
使用yaffs文件系统一段时间后,串口输出大量 "Partially written block X detected" !主要原因在于yaffs2文件系统在关闭之前,要将dirty 数据写入nand flash。否则下一次开机yaffs2 scan 的时候,就会发现这些block 是Partially written 部分写入的,所以就会提示。这种提示是yaff2文件系统常见的错误!原创 2017-05-15 16:22:40 · 544 阅读 · 0 评论 -
ubuntu下NFS挂载常见错误的解决方法[转载]
nfs挂载常见错误及解决方法1、问题一reason given by server: Permission denied解决:服务器端启动一定要sudo启动,不然启动失败,服务拒绝。2、问题二svc: failed to register lockdv1 RPC service (errno 111).lockd_up: makesock failed, error=-1转载 2017-05-15 21:19:33 · 11717 阅读 · 0 评论 -
向uboot增加新的命令
一、命令的具体定义每个命令都是通过U_BOOT_CMD宏来定义的,这个宏定义了一个相关的结构体cmd_tbl_s,是在uboot/include/command.h 文件中。如下所示:struct cmd_tbl_s { char *name; /* Command Name */ int maxargs; /* maximum number of arguments原创 2017-05-15 22:14:20 · 2470 阅读 · 0 评论 -
ARM移植rz和sz命令
嵌入式Linux移植rz和sz命令1、下载rzsz源码包http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz我在网上尝试找了一下,没有找到下载文件。感兴趣的可以自己去尝试下载源码。这里百度rzsz 源码下面可以下载到如果在Linux系统命令行下,可以使用wget 命令进行下载。wget http://freeware.sg原创 2017-05-15 23:50:01 · 2004 阅读 · 0 评论 -
ARM移植file命令
ARM移植file命令的详细步骤:1、下载file 源代码从下面ftp 站点下载Linux file 命令源代码file-5.04.tar.gzftp://ftp.astron.com/pub/file2、使用tar 命令对文件进行解压。-C选项是指定解压目录 tar xvzf file-5.04.tar.gz -C /root/ARM/3、编写原创 2017-05-16 11:25:23 · 1899 阅读 · 0 评论 -
vboot完全解读[转载]
上半个月在学习bootloader,突然找到了一个非常好的vboot。vboot只有最基本的内核引导功能(基于s3c2440,从nand flash启动),对其深入研究后,发现对bootloader有了比较全面的理解。虽然没有像uboot那么多功能,但vboot已经实现了bootloader最核心的功能,其他像什么网络功能、烧写功能等等也只是一些裸机驱动而已。学习bootloader需要有汇编的基转载 2017-05-17 17:43:42 · 3170 阅读 · 0 评论 -
mini2440移植printf/scanf函数[转载]
本来想自己实现一个printf函数,顺便再回顾一下变参函数的处理,但是时间紧张,在这里就先通过移植库函数来实现自己的printf函数,等有时间,在重新自己实现下。代码基本上是在前面已有的基础上继续添加:首先来看下lboot.ldsENTRY(_start)SECTIONS{ . = 0x00000000; .init :转载 2017-05-17 22:04:41 · 599 阅读 · 0 评论 -
串口状态机的应用[转载]
以前并没有发现串口状态机的好处,最近用到了这种指定格式的数据包解析,才发现这东西非常的好用,可以对串口的数据包进行过滤只解出符合协议的数据包。这个呢其实就是一种思想,不仅仅局限于串口之间的数据传输,我认为可以用在很多指定数据协议的数据包传输解析当中。大致代码思想写在下面,希望对大家有帮助。/* 主要的变量声明在这边 *//* 串口状态机宏 */#define DATA_HEAD 3#d转载 2017-05-18 16:20:39 · 1628 阅读 · 0 评论 -
mjpg-streamer项目源码分析[转载]
前一段时间自己买了个开发板(GT2440的),可是我没有够相应的买cmos摄像头,可是又想做下国嵌的usb视频采集和传输的哪个项目。没办法,只好网上找找相关的项目,最终发现了mjpg-streamer这个开源项目。看了blog们的文章,有种激动,于是自己问同学借了个usb摄像头,试了试,挺好使的。而且处理速度上也挺好的,就开始想了解这个项目是怎么工作了(研究了好几天哦)。下面是我个人在这学习m转载 2017-05-18 16:49:33 · 6241 阅读 · 0 评论 -
u-boot与Linux内核间的参数传递过程分析[转载]
U-boot会给Linux Kernel传递很多参数,如:串口,RAM,videofb、MAC地址等。而Linux kernel也会读取和处理这些参数。两者之间通过struct tag来传递参数。U-boot把要传递给kernel的东西保存在struct tag数据结构中,启动kernel时,把这个结构体的物理地址传给kernel;Linux kernel通过这个地址,用parse_tags分转载 2017-05-10 12:02:04 · 1153 阅读 · 0 评论 -
UBoot常用命令手册[转载]
UBoot常用命令手册U-Boot还提供了更加详细的命令帮助,可以通过”?”显示支持的命令列表,通过help [CommandName]命令还可以查看每个命令的参数说明。 1、bootmbootm [addr [arg ...]] - boot application image stored in memory passing argument转载 2017-05-10 12:13:09 · 330 阅读 · 1 评论 -
mjpg_streamer源码对针对图像处理算法的修改[转载]
最近在研究mjpg_streamer,发现这是个好东西!关于mjpg_streamer就不做具体介绍了,总之它是在Linux上运行的视频服务器,可以将摄像头采集到的视频数据通过网络传输到客户端,实现视频监控,mjpg_streamer是开源项目。 首先简要的分析一下mjpg_streamer的源码及其工作过程。可以参考这里:http://blog.csdn.net/zhengqijun_/a转载 2017-05-19 21:15:24 · 939 阅读 · 0 评论 -
u-boot环境变量与内核MTD分区关系[转载]
u-boot 与Linux系统内核中MTD分区的关系分区只是内核的概念,就是说A~B地址放内核,C~D地址放文件系统,(也就是规定哪个地址区间放内核或者文件系统)等等。一般我们只需要分3-4个区,第一个为boot区,一个为boot参数区(传递给内核的参数),一个为内核区,一个为文件系统区。(但是有的内核就会有很多分区,比如内核参数会有两个,还有会Logo的地址)。而对于bootload转载 2017-05-13 17:38:38 · 724 阅读 · 0 评论 -
Linux内核启动显示时间信息
在最开始移植Linux内核的时候,发现自己配置的内核编译出来启动信息十分的杂乱无章。但是厂家提供的Linux镜像文件下载到开发板中,打印的信息十分清晰。它在打印内核启动信息之前都会先打印一个时间信息出来!下面来看看怎么配置Linux内核:首先在Linux内核文件下,执行make menuconfig 命令,进入配置界面。点击Kernel hacking选项,选择Show timing原创 2017-05-13 16:31:02 · 3193 阅读 · 0 评论 -
mkimage使用详解
uboot源代码的tools 目录下有mkimage工具,这个工具可以用来制作不压缩或者压缩的多种可启动镜像文件。mkimage在制作镜像文件的时候,是在原来的可执行镜像文件的前面加上一个0x40字节的头,记录参数所指定的信息,这样uboot才能识别这个镜像文件的CPU体系结构的、操作系统、加载内存的位置, 入口地址等。使用mkimage命令前,最好将mkimage 命令复制到 /usr/原创 2017-05-13 14:54:55 · 7590 阅读 · 0 评论 -
ADS1.2卸载不了和重装不上的解决办法
一、ADS1.2不能卸载的解决办法:在卸载ADS软件的时候,会一直弹出一个窗口,无法卸载。先点击Remove进行卸载,卸载完成后再去找ADS软件的安装位置。把ADS软件的安装目录整个删除即可。二、ADS1.2软件卸载后重装问题的解决办法我在安装ADS1.2软件的时候,进度条卡了一下,我用任务管理器强制关闭安装进程。结果卸载ADS软件后重新安装的时候,总是在 modify r原创 2017-03-07 22:33:06 · 29518 阅读 · 1 评论 -
向vivi加入命令 - xgc94418297的日志 [转载]
嵌入式系统移植 2009-05-19 09:47:43在vivi的lib/command.c中添加自己的命令核心数据结构user_command。typedef struct user_command { const char *name; //命令名 void (*cmdfunc)(int argc, co转载 2017-03-21 16:25:41 · 551 阅读 · 0 评论 -
扬创-uboot在2440上的移植详解(2)[转载]
9)实现u-boot对yaffs/yaffs2文件系统下载的支持。 注意:此篇对Nand的操作是基于MTD架构方式,在“u-boot-2009.08在2440上的移植详解(三)”中讲到过。 通常一个Nnad Flash存储设备由若干块组成,1个块由若干页组成。一般128MB以下容量的Nand Flash芯片,一页大小为528B,被依次分为2个256B转载 2017-03-23 11:18:25 · 367 阅读 · 0 评论 -
扬创-uboot在2440上的移植详解(1)[转载]
一、移植环境主 机:VMWare--UBUNTU 10.04开发板:UTU2440--64MB Nand(K9F1208U0C),Kernel:2.6.13编译器:arm-linux-gcc-4.3.2.tgzu-boot:u-boot-2009.11.tar.bz2二、移植步骤本次移植的功能特点包括:支持Nand Flash读写支持从Nor/Nand Flash转载 2017-03-23 11:15:26 · 945 阅读 · 0 评论 -
windows7 64位无法安装dnw的驱动解决方案[转载]
64位的windows可以安装dnw的驱动,但无法使用dnw。此问题主要是因为dnw驱动无法通过window64位机的数字签名的缘故。1、下载64位windows上的dnw驱动参考驱动:http://download.csdn.net/detail/tanhao199406/86717412、下载解决数字签名的软件下载地址: http://downloa转载 2017-03-31 18:37:22 · 1251 阅读 · 0 评论 -
uboot在2440上移植 - xgc94418297的日志 [转载]
以前一直在用vivi,很精简很方便,源码很好懂,想改什么就改什么,但是功能差了点,所以移植个uboot来跑跑,uboot很好很强大,但是想搞清它的机制有点困难,先移植个最简单的试试,还没有增加对yaffs的支持和usb下载,遇到一些小问题也都解决了。我用的2440开发板,取名为TX2440。 解压U-BOOT-1.1.6,进入U-BOOT目录,修改Makefile:在smdk2转载 2017-03-21 16:23:04 · 464 阅读 · 0 评论 -
韦东山烧写uboot和Linux系统笔记[转载]
烧写步骤:一、使用openjtag往nor flash烧写u-boot。二、使用u-boot菜单用DNW通过USB下载,DNW无需任何设置,直接发送文件。然后选中所需的bin文件即可。三、通过TFTP下载烧写1、设置uboot里的IP地址OpenJTAG> set serverip 192.168.1.100(192.168.1.100是PC机的ip转载 2017-04-12 14:28:28 · 2231 阅读 · 0 评论 -
JLink烧写Nor Flash出错的解决方案
最近在看国嵌的教学视频,在国嵌体验入门班-2-1(开发板系统安装-Jlink方式)一集中,直接烧写nor flash,不进行任何配置的方法,能够成功纯属偶然!在视频中烧写时也出现了两次错误,误认为是JLink不稳定,先将此文贴出,纠正其错误方法。如果出现上述错误,可以参考下面的方法进行重新配置。我的开发板是mini2440,如果是其它类型,也可以根据具体情况参考。一、解决方案一原创 2017-04-03 19:46:53 · 3092 阅读 · 0 评论 -
使用SuperVivi-USB-Transfer-Tool代替DNW
在Windows7 64位系统下,安装好USB的驱动后,将mini2440开发板的USB接口插到电脑上,检测不到USB。在设备管理器查看USB驱动,始终无法正常识别,有黄色标记,所以Windows7 64位可能是不支持DNW的USB驱动。我找到一种可以替代DNW软件的工具,叫做SuperVivi-USB-Transfer-Tool。下面就来讲讲怎么安装这个工具吧!安装步骤如下所示:原创 2017-04-03 22:05:09 · 4088 阅读 · 0 评论 -
Linux内核启动卡在Uncompressing Linux... done, booting the kernel[转载]
Uboot输出,无内核信息输出## Booting kernel from Legacy Image at 32000000 ...Image Name: Linux-2.6.13-utulinux2440Created: 2007-11-04 7:12:20 UTCImage Type: ARM Linux Kernel Image (gzip compr转载 2017-04-29 19:45:12 · 3624 阅读 · 0 评论 -
SecureCRT显示乱码的解决办法
SecureCRT是一款支持SSH的终端仿真程序,用于连接运行包括Windows、UNIX和VMS的工具。对于学ARM的人来说,这个软件也是十分的好用!下面来看看SecureCRT的显示问题,如果没有设置好,那么就会出现乱码这种情况。比如:我发现在连接Linux系统之后,因为我装的是中文版的Linux系统,所以在显示中文的时候,SecureCRT显示出乱码。原因在于我们的Linux原创 2017-04-16 20:19:05 · 193397 阅读 · 22 评论 -
linux内核启动地址的确定[转载]
内核编译链接过程是依靠vmlinux.lds文件,以arm为例vmlinux.lds文件位于kernel/arch/arm/vmlinux.lds,vmlinux-armv.lds的生成过程在kernel/arch/arm/Makefile中ifeq ($(CONFIG_CPU_32),y)PROCESSOR = armvTEXTADDR = 0xC0008转载 2017-04-20 21:25:35 · 1198 阅读 · 0 评论 -
/usr/bin/ld: cannot find -lm的解决方法
我在编译程序的时候出现编译错误!如下所示:/usr/bin/ld: cannot find -lmcollect2: ld 返回 1cannot find -lm问题根源在于:编译的时候用了“-static” 选项。那么为什么出现这个问题呢?因为现在的Linux中没有静态c库。解决办法:安装glibc-static 库就好了。我的主机环境是RHEL6.5,安装命令如下所示原创 2017-05-22 22:33:11 · 16103 阅读 · 4 评论 -
Linux根文件系统介绍[转载]
根文件系统首先是一种文件系统,但是相对于普通的文件系统,它的特殊之处在于,它是内核启动时所mount的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。 我们首先从主机上所安装的Linux操作系统中了解一些根文件系统的信息。比如在笔者工作的Linux桌面系统中可以得到下面的结果: #转载 2017-05-04 14:24:36 · 306 阅读 · 0 评论 -
linux根文件系统的区别[转载]
根文件系统一直以来都是所有类Unix操作系统的一个重要组成部分,也可以认为是嵌入式Linux系统区别于其他一些传统嵌入式操作系统的重要特征,它给 Linux带来了许多强大和灵活的功能,同时也带来了一些复杂性。我们需要清楚的了解根文件系统的基本结构,以及细心的选择所需要的系统库、内核模块和应用程序等,并配置好各种初始化脚本文件,以及选择合适的文件系统类型并把它放到实际的存储设备的合适位置,下面是几中转载 2017-05-04 14:35:28 · 405 阅读 · 0 评论 -
解决Linux内核生成uImage时Entry Point自动偏移64个字节
解决Linux内核进行make uImage编译时,生成uImage Entry Point 自动偏移64个字节make uImage 编译内核自动生成uImage 时,Entry Point 入口地址和Load Address 加载地址总是相同,都是Load Address:30008000、Entry Point:30008000。这样一来,内核解压完后,bootm之后就会出错,因为uI原创 2017-05-13 13:44:27 · 968 阅读 · 0 评论 -
Madplay移植到mini2440全过程详解[转载]
madplay交叉编译交叉编译器:arm-linux-gcc 3.4.1PC环境:Ubuntu 8.10注意:最好在root权限下执行以下移植,否则在make install时可能权限不够。一、移植madplay前的准备madplay的移植需要以下的几个包:libid3tag-0.15.1b.tar.gz、libmad-0.15.1b.tar.gz、madplay-0.15.2转载 2017-05-22 21:45:12 · 505 阅读 · 0 评论