随笔分类 -  ARM与嵌入式Linux

摘要:1、perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果; 举例: -g 选项是告诉perf record额外记录函数的调用关系 -e cpu-clock 阅读全文
posted @ 2018-10-14 19:10 ZYVV 阅读(878) 评论(0) 推荐(0) 编辑
摘要:一、概述 如图所示,在海思平台上将内存分为两个部分:os内存和mmz内存。os内存指:由linux操作系统管理的内存;mmz内存:由mmz驱动模块进行管理供媒体业务单独使用的内存,在驱动加载时可以指定该模块管理内存的大小: insmod mmz.ko mmz=anonymous,0,0x4fa000 阅读全文
posted @ 2018-09-30 19:12 ZYVV 阅读(4910) 评论(0) 推荐(0) 编辑
摘要:CMakeCache.txt 可以将其想象成一个配置文件(在Unix环境下,我们可以认为它等价于传递给configure的参数)。 CMakeLists.txt 中通过 set(... CACHE ...) 设置的变量 CMakeLists.txt 中的 option() 提供的选项 CMakeLi 阅读全文
posted @ 2018-09-30 19:11 ZYVV 阅读(7730) 评论(0) 推荐(2) 编辑
摘要:用最新的QtCreator选择GUI的应用会产生含有如下文件的工程 下面就简单分析下各部分的功能。 .pro文件是供qmake使用的文件,不是本文的重点【不过其实也很简单的】,在此不多赘述。 所以呢,还是从main开始, 很简单的样子 QApplication a(argc, argv)和a.exe 阅读全文
posted @ 2018-01-05 16:23 ZYVV 编辑
摘要:一、PC虚拟机下ubuntu14.04.1环境下 源文件:show.c USB摄像头格式yuyv: 申请缓冲帧数2,分辨率640*480 阻塞无法执行 申请缓冲帧数4,分辨率640*480 阻塞无法执行 申请缓冲帧数2,分辨率320*240 隔3到5帧取到一帧数据 申请缓冲帧数4,分辨率320*24 阅读全文
posted @ 2017-04-04 21:11 ZYVV 阅读(1890) 评论(0) 推荐(0) 编辑
摘要:从2014年初到现在,虽然DE1-SoC已经推出近两年多并且该板子的好评率也不低,但是网上能找到的相关开发经验却并不多,因此很多问题也需要自己慢慢探索。本文先来谈一谈如何有效地对其linux内核进行编译。 众所周知,SoC FPGA的最大特点就是除了运用FPGA进行硬件定制和构建NIOS软核处理器之 阅读全文
posted @ 2017-01-11 13:48 ZYVV 编辑
摘要:系统: ubuntu-14.04-desktop-i386 ARM 系统: DE1_SoC_FB 虚拟机工具: VMware-workstation-full-10.0.1 opencv: 3.2.0 qt: qt-linux-opensource-5.2.0-x86offline.run 交叉编译 阅读全文
posted @ 2017-01-11 13:32 ZYVV 编辑
摘要:大多数bootloader都分为stage1和stage2两部分,u-boot也不例外。依赖于CPU体系结构的代码(如设备初始化代码等)通常都放在stage1且可以用汇编语言来实现,而stage2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。1、Stage1 start. 阅读全文
posted @ 2016-11-09 17:01 ZYVV 阅读(187) 评论(0) 推荐(0) 编辑
摘要:先进入顶层Makefile。有很多相对不同板子的配置,如: gec2440_config:unconfig @(MKCONFIG)(@:_config=) arm arm920t gec2440 samsung s3c24x0 1.配置编译uboot第一步都是make *****_config 阅读全文
posted @ 2016-11-07 16:30 ZYVV 阅读(556) 评论(0) 推荐(0) 编辑
摘要:为了使单独编译的C语言程序和汇编程序之间能够相互调用,必须为子程序之间的调用规定一定的规则.ATPCS就是ARM程序和THUMB程序中子程序调用的基本规则。 基本ATPCS规定了在子程序调用时的一些基本规则,包括下面3方面的内容: 1.各寄存器的使用规则及其相应的名称。 2.数据栈的使用规则。 3. 阅读全文
posted @ 2016-11-04 21:29 ZYVV 编辑
摘要:在看Uboot的start.S文件时候,发现其最开始初始化系统,做的第一件事情,就是将CPU设置为SVC模式,但是S3C2440的CPU的core是ARM920T,其有7种模式,为何非要设置为SVC模式,而不是设置为其他模式呢?对此,经过一些求证,得出如下原因: 首先,先要了解ARM的CPU的7种模 阅读全文
posted @ 2016-11-04 21:00 ZYVV 编辑
摘要:一、 概论 一、 概论 每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的section放入输出文件内, 并控制输出文件内各部分在程序地址空间内的布局. 但你也可以用连接命令做一些其他事情. 连接器有个默认的内置连接 阅读全文
posted @ 2016-11-03 19:15 ZYVV 编辑
摘要:一、MMU地址转换:1.首先弄清除为什么要使用MMU纳?MMU即内存管理单元,直白一点的讲,就像食堂的餐具,所有的学生一起吃饭时不够用,但食堂又不想再出资购买新的餐具(原因很明显:一方面要成本,另一方面又占地方。这就像增加内存一样),那么有没有解决办法?根据以往经验得知不可能全学校的学习一起都到食堂 阅读全文
posted @ 2016-11-02 19:46 ZYVV 编辑
摘要:使用内嵌汇编,要先编写汇编指令模板,然后将C语言表达式与指令的操作数相关联,并告诉GCC对这些操作有哪些限制条件。例如在下面的汇编语句:__asm__ __violate__("movl %1,%0" : "=r" (result) : "m" (input));“movl %1,%0”是指令模板; 阅读全文
posted @ 2016-11-02 19:39 ZYVV 编辑
摘要:ARM9协处理器CP15及MCR和MRC指令 在基于ARM的嵌入式应用系统中,存储系统通常是通过系统控制协处理器CP15完成的。CP15包含16个32位的寄存器,其编号为0~15。 访问CP15寄存器的指令 MCR ARM寄存器到协处理器寄存器的数据传送 MRC 协处理器寄存器到ARM寄存器的数据传 阅读全文
posted @ 2016-11-02 19:38 ZYVV 编辑
摘要:1.1.1 ARM处理器模式切换(含MRS,MSR指令) 除了用户模式和系统模式,其余模式下都有一个私有SPSR保存状态寄存器,用来保存切换到该模式之前的执行状态,之所以用户模式和系统模式没有SPSR是因为,通常CPU大部分时间执行在用户模式下,当产生异常或系统调用时会分别切换进入另外几种模式,保存 阅读全文
posted @ 2016-11-02 15:52 ZYVV 编辑
摘要:ARM寄存器 一、ARM工作状态下的寄存器组织 ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个位状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可以访问的,取决ARM处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R14~R0、程序计数器PC(即R15)、一个 阅读全文
posted @ 2016-11-01 21:19 ZYVV 编辑
摘要:ARM汇编程序特点: l 所有运算处理都是发生通用寄存器(一般是R0~R14)的之中.所有存储器空间(如C语言变量的本质就是一个存储器空间上的几个BYTE).的值的处理,都是要传送到通用寄存器来完成.因此代码中大量看到LDR,STR指令来传送值. l ARM汇编语句中.当前语句很多时候要隐含的使用上 阅读全文
posted @ 2016-11-01 21:05 ZYVV 编辑

点击右上角即可分享
微信分享提示