arm嵌入式

用Qemu模拟vexpress-a9 (一) --- 搭建Linux kernel调试环境

♀尐吖头ヾ 提交于 2019-12-18 04:55:56
参考: http://blog.csdn.net/linyt/article/details/42504975 环境介绍: Win7 64 + Vmware 11 + ubuntu14.04 32 u-boot 版本:u-boot-2015-04 Linux kernel版本:linux-3.16.y busybox版本:1_24_stable 交叉编译工具链:arm-linux-gnueabi- qemu版本:stable-2.4 下载Linux内核 下载内核有两种方法,一种是用git直接下载内核代码树,方便后面的内核开发。另一种是直接到内核社区下载对应版本的源码包。我采用第一种方法,但后面发现 主线上3.18版本和后面版本的代码,使用这种搭建方法运行不起来。目前未查明问题的根因。如果读者想快速搭建成功,建议选用3.16版本的内核进行搭建。( 这个刚开始我用的是linux-4.4版本的内核,用qemu-system-arm无法运行,然后我就改用linux-3.16的内核了 ) 方法一:使用git git clonegit://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 方法二:直接下载3.16源代码包 wget https://www.kernel.org/pub/linux/kernel/v3.x

2018-2019-1 20175304 20175303 20175327 20175335 实验一 开发环境的熟悉

冷暖自知 提交于 2019-12-17 10:31:42
2018-2019-1 20175304 20175303 20175327 20175335 实验一 开发环境的熟悉 实验目的: 熟悉Linux开发环境;学会Linux开发环境的配置和使用;使用Linux的arm编译。 实验过程: 实验一-1-交叉编译环境-(使用自己笔记本电脑) 1.安装老师提供的software目录中的“VMware-workstation-full-10.0.1-1379776.exe” 2.解压老师提供的software目录中的“Ubuntu1204.rar” 3.用VMWare打开Ubuntu,用户名:linux,口令:1 4.建立实验目录"mkdir linux_20175304_20175303_20175327_20175335" 5.在实验目录中编写“hello word”程序,另外补充几行打印所有组员的学号姓名 #include <stdio.h> int main(){ printf("HelloWorld!\n"); printf("20175304_20175303_20175327_20175335\n"); return 0; } 1.考bocsd目录中的脚本armc.sh, 分别用gcc和交叉编译器arm-none-linux-gnuenbi-gcc编译hello.c,用gcc编译的可执行文件命名linuxhello:gcc

安装交叉编译工具arm-linux-gcc-4.3.2 并且修改环境变量

大憨熊 提交于 2019-12-17 04:32:59
安装交叉编译工具arm-linux-gcc-4.3.2 2011-07-08 00:55:28 | 分类: 嵌入式 | 举报 | 字号 订阅 环境:Fedora 9 STEP 1: 下载arm-linux-gcc-4.3.2.tgz. 把arm-linux-gcc-4.3.2.tgz随便放在一个目录,我放在了/opt 。 下载网站1: http://www.arm123.com.cn/linux/arm-linux-gcc-4.3.2.tgz 下载网站2:http://www.arm9.net/download-arm-linux-gcc-4.3.2.asp STEP 2: 进入到/opt,解压arm-linux-gcc-4.3.2.tgz. 这个包里面有个解压的默认路径,把解压文件放在了./ usr/local/arm/4.3.2 .而我现在把文件放在了/opt里面,那么解压的位置应该是,/opt/usr/local/arm/4.3.2.为了方便,我们解压的时候把./改成根目录。可以man tar 看一下-C选项的意思。解压完毕可以到/usr/local/arm/里面看看是否ok。 cd /opt/ tar xvzf arm-linux-gcc-4.3.2.tgz –C / STEP 3: 经 过步骤2,arm-linux-gcc已经安装到系统里面了,可以使用了,但是

搭建OK6410交叉编译环境arm-linux-gcc-4.3.2

我与影子孤独终老i 提交于 2019-12-17 00:38:42
安装交叉编译工具arm-linux-gcc-4.3.2 2011-07-08 00:55:28 | 分类: 嵌入式 | 标签: | 字号 大 中 小 订阅 环境:Fedora 9 STEP 1 : 下载arm-linux-gcc-4.3.2.tgz. 把arm-linux-gcc-4.3.2.tgz随便放在一个目录,我放在了/opt 。 下载网站1: http://www.arm123.com.cn/linux/arm-linux-gcc-4.3.2.tgz 下载网站2:http://www.arm9.net/download-arm-linux-gcc-4.3.2.asp STEP 2 : 进入到/opt,解压arm-linux-gcc-4.3.2.tgz. 这个包里面有个解压的默认路径,把解压文件放在了./ usr/local/arm/4.3.2 .而我现在把文件放在了/opt里面,那么解压的位置应该是,/opt/usr/local/arm/4.3.2.为了方便,我们解压的时候把./改成根目录。可以man tar 看一下-C选项的意思。解压完毕可以到/usr/local/arm/里面看看是否ok。 cd /opt/ tar xvzf arm - linux - gcc - 4 . 3 . 2 . tgz –C / STEP 3 : 经 过步骤2,arm-linux

linux系统下arm读取摄像头

妖精的绣舞 提交于 2019-12-16 03:41:20
linux环境下Arm里实现读取摄像头 需要用嵌入式Linux的Arm环境下读取摄像头并在arm终端上做显示,想要解码显示的时候延时最好控制在200ms范围内, 交叉编辑器以下: gcc version 7.3.0 (GCC) arm-poky-linux-gnueabi-gcc 哪位高手指点迷津请留言。 来源: CSDN 作者: 暖暖的太阳 链接: https://blog.csdn.net/bianhailing2005/article/details/103503597

ARM的异常与裸机开发

☆樱花仙子☆ 提交于 2019-12-15 20:20:15
2019-12-15 关键字:嵌入式开发、异常处理、嵌入式裸机开发 1、ARM的异常 异常在嵌入式开发中是很常见的事件,它也是非常重要的事件。简单来说,异常就是一种会打断程序正常执行的事件。异常通常又称为“中断”。 异常的种类大致可分为如下几种: 1、中断 IRQ / FIQ 由外部硬件触发的中断。 2、软中断 soft interrupt 由系统调用的中断事件,由软件产生的中断事件。 3、复位 Reset 4、未定义指令 5、数据异常 例如数据越界等。 中断: ARM 有两级外部中断:1、FIQ;2、IRQ。 但大多数的嵌入式系统都有多于两个的外部中断源,为了能正常响应所有的外部中断事件,就需要一个“中断控制器”。 嵌入式系统的中断响应架构大致如下图所示: 当在短时间内产生大量中断事件时,CPU无法保证能及时响应所有的中断事件。为了避免发生丢失中断的问题,每一个中断事件都会作一个“记录”,即我们常见的设置“中断标志位”。当CPU查到中断标志位的值有效时,就会发起一个中断事件。当然,一个中断事件我们一般只需要处理一次,因此,通常我们要在中断处理函数中将对应的中断标志位作清除操作。 ARM 系统会有一个“中断向量表”的机制来专门存储中断响应函数地址。 2、裸机开发 什么是祼机开发? 祼机开发就是指在嵌入式开发板中,直接编写程序控制硬件设备的开发模式。在开发板上没有操作系统

ARM嵌入式——制作根文件系统并使用NFS挂载运行。

﹥>﹥吖頭↗ 提交于 2019-12-15 09:02:56
制作根文件系统并使用NFS挂载运行。 上位机准备: 准备busybox,安装menuconfig所需依赖的库: sudo apt-get install build-essential sudo apt-get install libncurses5 sudo apt-get install libncurses5-dev 在busybox中执行make menuconfig Linux Module Utilities ---> //按N键去除选项(insmod/lsmod/rmmod精简版命令) [*] Simplified modutils (NEW) 去除以上选项,立马出现完整版的命令选项: [*] insmod (NEW) │ │ [*] rmmod (NEW) │ │ [*] lsmod (NEW) [*] Pretty output (NEW) [*] Blacklist support │ │ [*] modprobe (NEW) │ │ [*] depmod (NEW) 保存退出 注意:目前busybox提供的命令已经足够使用 修改Makefile进行交叉编译: vim Makefile +164 //修改为指定的交叉编译器。 vim Makefile +190 //修改为ARCH=arm。(指定架构) 保存退出 正式进行编译: make make install

xmake从入门到精通9:交叉编译详解

岁酱吖の 提交于 2019-12-09 07:16:26
xmake是一个基于Lua的轻量级现代化c/c++的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验。 除了win, linux, macOS平台,以及android, ios等移动端平台的内建构建支持,xmake也支持对各种其他工具链的交叉编译支持,本文我们将会详细介绍下如何使用xmake进行交叉编译。 项目源码 官方文档 交叉编译工具链简介 通常,如果我们需要在当前pc环境编译生成其他设备上才能运行的目标文件时候,就需要通过对应的交叉编译工具链来编译生成它们,比如在win/macos上编译linux的程序,或者在linux上编译其他嵌入式设备的目标文件等。 通常的交叉编译工具链都是基于gcc/clang的,大都具有类似如下的结构: /home/toolchains_sdkdir - bin - arm-linux-armeabi-gcc - arm-linux-armeabi-ld - ... - lib - libxxx.a - include - xxx.h 每个工具链都有对应的include/lib目录,用于放置一些系统库和头文件,例如libc, stdc++等,而bin目录下放置的就是编译工具链一系列工具。例如: arm-linux-armeabi-ar arm-linux-armeabi-as arm-linux

一颗ARM架构芯片硬件和软件构架

柔情痞子 提交于 2019-12-05 20:01:23
(一)硬件 主控CPU: 运算和控制核心。基带芯片基本构架采用微处理器+数字信号处理器(DSP)的结构,微处理器是整颗芯片的控制中心,会运行一个实时嵌入式操作系统(如Nucleus PLUS),DSP子系统负责基带处理。应用处理器则可能包括多颗微处理器,还有GPU。微处理器是ARM的不同系列的产品(也可以是x86架构),可以是64位或者32位。处理器内部通过“内部总线”将CPU所有单元相连,其位宽可以是8-64位。 总线: 计算机的总线按功能可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。CPU内部部件由内部总线互联,外部总线则是CPU、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接。外部设备通过相应的接口电路再与外部总线相连接,从而形成了硬件系统。外部总线通过总线接口单元BLU与CPU内部相连。 片上总线标准高级微控制器总线结构AMBA定义了高性能嵌入式微控制器的通信标准。定义了三组总线:AHB(AMBA高性能总线)、ASB(AMBA系统总线)、和APB(AMBA外设总线)。AHB总线用于高性能、高时钟工作频率模块。AHB为高性能处理器、片上内存、片外内存提供接口,同时桥接慢速外设。DMA、DSP、主存等连在AHB上。ASB总线主要用于高性能系统模块。ASB是可用于AHB不需要的高性能特性的芯片设计上可选的系统总线

将Nodejs移植到Arm

亡梦爱人 提交于 2019-12-05 16:14:50
最近在做一个项目,硬件平台是ARM Cortex A8的处理器,软件平台当然是GNU/linux。本来计划全部是用C写的,嵌入式吗。可以老板偏爱node.js,认为很是高大上。 没办法,移植吧。Baidu了一下,网上node.js移植到arm的内容不太多,发现了一篇文章,CSDN上,王山二的《 将node.js移植到arm开发板 》,很是有启发。但是为啥叫山二呢,小二多好听 。还有几个是介绍raspberryPi下移植的,姑且参考一下吧。 硬件平台差不多,都是Cortex A8,不过我的是Ti的AM3357处理器。收集好资料后,上node的网站上看看。中文网最新的是8.4,英文网最新的是8.5(现在已更新到8.6).好吧,我对这个有偏执,当然用最新的8.5。到下载页面一看,耶,有移植好的耶。如下图: 本人一向很懒的,能坐着绝不站着。这款处理器是ARMv7l的平台,正好有移植好的可用。 下载,node-v8.5.0-linux-armv7l.tar.xz。 安装,将文件复制到/usr目录下。 xz -d node-v8.5.0-linux-armv7l.tar.xz tar -vxf node-v8.5.0-linux-armv7l.tar.xz 在usr/下建立了一个node-v8.5.0-linux-armv7l的目录。 然后配置路径,方法是sudo vi /etc