嵌入式linux

嵌入式GPIO接口及操作(一)

邮差的信 提交于 2020-02-10 02:59:20
  GPIO意思就是通用输入输出,一些引脚可以通过他们输出高低电平,或者通过它们读入引脚的状态。 对GPIO的操作是对所有硬件的操作最基本的技能。 一、通过寄存器来操作GPIO引脚,一个引脚可以用于输入、输出或者其他的特殊功能,那么一定有寄存器来配置这些功能, 对于输入,就是读取引脚的状态,一定可以从寄存器在中读取到引脚的状态;对于输出,也有相应的寄存器,向寄存器中 写入数据使引脚输出高低电平;其他特殊功能,有另外的寄存器来控制它。 对于S3C2440来说,同样的道理,也会有上面所说的寄存器,GPxCON用于配置引脚的功能的(输入、输出或其他功能), GPxDAT用于读/写引脚数据;另外GPxUP用于是否使用内部上拉电阻。 1、GPxCON寄存器-配置寄存器 对于S3C2440,除了GPACON特殊外(寄存器每一位对应一个引脚),其它都是寄存器的没2位控制一根引脚:00表示输入, 01表示输出、10表示特殊、11保留不用。 2、GPxDAT寄存器 用于读/写引脚:当引脚被设为输入时,从GPxDAT寄存器读取引脚的状态;当引脚被设为输出时,将数据写入GPxDAT寄存器 相应的引脚会输出相应的该低电平。 3、GPxUP寄存器 某位为1时,相应引脚无内部上拉电阻;某位为0时,相应引脚使用上拉电阻。 上拉电阻、下拉电阻的作用:GPIO为第三态时(相当于无外接芯片),引脚的电平状态有上拉电阻

嵌入式设计应用资料汇总,不定时更新中……

一笑奈何 提交于 2020-02-08 04:14:37
以下资料为本人搜集整理,与大家分享,如若侵害您的权利,请您速与本人联系,及时删除 视频传输研究及在嵌入式监控系统中的应用caj 嵌入式智能用电家居系统的研究与设计.nh 嵌入式智能家庭网关的软件设计.pdf 嵌入式远程视频采集系统的设计与实现.pdf 嵌入式语音合成系统的研究与实现.kdh 嵌入式无线家庭网关的设计与应用.pdf 嵌入式无线家庭网关的设计与应用.nh 嵌入式无线家庭网关的设计与实现.pdf 嵌入式视频监控服务器技术研究.caj 嵌入式实时视频传输系统的设计与实现.caj 嵌入式家庭网关及其安全机制的研究与设计.caj 嵌入式动态图像监测系统设计与实现.pdf 物联网系统中嵌入式BOA的移植与应用.pdf 嵌入式Web服务器Boa的移植及其应用.pdf 嵌入式Internet与家庭网关技术.pdf 基于微处理器的嵌入式Internet系统研究与实现.pdf 基于数字机顶盒的嵌入式数据库SQLite3的应用与研究.caj 基于嵌入式系统的智能家庭网关研究.nh 基于嵌入式无线传输文件系统的研究与设计.caj 基于嵌入式平台的语音合成技术的研究与实现.nh 基于嵌入式的家电关键词语音识别系统的研究与设计.caj 基于嵌入式Web的校园视频监控系统的设计与实现.pdf 基于嵌入式Linux视频监控系统毕业论文.doc 基于嵌入式Linux软件平台技术的研究.caj

嵌入式产品:移植

删除回忆录丶 提交于 2020-02-06 10:52:16
注意: 1. 检查内存是否够大,不够大编译时会崩溃,弹出其它错误提示 2. 解压源码时用对应的命令解压,不要偷懒用-xvf 3. make install 安装时用sudo权限 移植步骤 1. 解压源码 2. 配置 ./configure 不加参数采用默认安装,安装到/usr/local --prefix=/temp 安装目录为/temp 3. 查看配置参数 ./configure --help 4. 编译 make -j x 以x个线程编译,加快速度 5. 安装 sudo make install 6. 查看可执行文件文件的类型,是不是对应平台 file xxx 7. 配置 在/etc/profile中添加PATH变量 export PATH=xxx/bin:$PATH export LD_LIBRARY_PATH=xxx/lib:$LD_LIBRARY_PATH 8. 查看环境变量 echo $PATH echo $LD_LIBRARY_PATH configure常用配置 configure是用来生成Makefile,以下是常用的配置: 1. --prefix=/xxx,指定安装路径,默认是安装到/usr/local 2. CC=xxx,指定配置gcc编译器 3. CXX=xxx,指定C++编译器 4. CFLAGS="-I/xxx",指定头文件路径 5. LDFLAGS="

嵌入式Linux系统:基础知识_网络通信原理

戏子无情 提交于 2020-02-02 09:48:50
2.1 互联网的本质就是一系列的网络协议 一台硬设有了操作系统,然后装上软件你就可以正常使用了,然而你也只能自己使用 像这样,每个人都拥有一台自己的机器,然而彼此孤立。 如何能大家一起玩耍 然而internet为何物? 其实两台计算机之间通信与两个人打电话之间通信的原理是一样的(中国有很多地区,不同的地区有不同的方言,为了全中国人都可以听懂,大家统一讲普通话) 普通话属于中国国内人与人之间通信的标准,那如果是两个国家的人交流呢? 问题是,你不可能要求一个人/计算机掌握全世界的语言/标准,于是有了世界统一的通信标准:英语 结论:英语成为世界上所有人通信的统一标准,如果把计算机看成分布于世界各地的人,那么连接两台计算机之间的internet实际上就是 一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列的协议,总称为‘互联网协议’(Internet Protocol Suite). 互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准。 2.2 osi七层协议 互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层 每层运行常见物理设备 2.3 tcp/ip五层模型讲解 我们将应用层,表示层,会话层并作应用层,从tcp/ip五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议

嵌入式Linux系统:基础知识_虚拟内存与物理内存

只谈情不闲聊 提交于 2020-02-02 06:15:19
在很久以前,还没有虚拟内存概念的时候,程序寻址用的都是物理地址。程序能寻址的范围是有限的,这取决于CPU的地址线条数。比如在32位平台下,寻址的范围是2^32也就是4G。并且这是固定的,如果没有虚拟内存,且每次开启一个进程都给4G的物理内存,就可能会出现很多问题: 物理内存是有限的,当有多个进程要执行的时候,都要给4G内存,很显然你内存小一点,这很快就分配完了,于是没有得到资源的进程就只能等待。当一个进程执行完了以后,再将等待的进程装入内存。这种频繁的装入内存的操作是很没效率的, 由于指令都是直接访问物理内存的,那么我这个进程就可以修改其他进程的数据,甚至会修改内核地址空间的数据,这是我们不想看到的。 因为内存是随机分配的,所以程序运行的地址也是不正确的。 于是针对上面会出现的各种问题,虚拟内存就出来了。 每一个进程运行时都会得到4G的虚拟内存。这个虚拟内存你可以认为,每个进程都认为自己拥有4G的空间,这只是每个进程认为的,但是实际上,在虚拟内存对应的物理内存上,可能只对应的一点点的物理内存,实际用了多少内存,就会对应多少物理内存。 进程得到的这4G虚拟内存是一个连续的地址空间(这也只是进程认为),而实际上,它通常是被分隔成多个物理内存碎片,还有一部分存储在外部磁盘存储器上,在需要时进行数据交换。 进程开始要访问一个地址,它可能会经历下面的过程: 每次我要访问地址空间上的某一个地址

嵌入式Linux系统:基础知识

試著忘記壹切 提交于 2020-02-01 20:51:06
1、计算机系统=运算器+控制器+存储器+输入设备+输出设备; CPU(中央处理器)=运算器+控制器+寄存器+内部总线; MPU(微处理器)=CPU; MCU(微控制器)=CPU+存储器+外围电路; MPU 通常代表一个 CPU(中央处理器),而 MCU 则强调把中央处理器、存储器和外围电路集成在一个芯片中。 早期,微控制器被称为单片机,意思是把计算机集成在一个芯片内。嵌入式微控制器也常被称作片上系统(SoC),含义是在一个芯片上设计了整个系统。 举个例子, Intel 的 80386 属于微处理器,而内部集成了 80386 处理器、片选单元、中断控制、定时器、看门狗、定时器、串行 I/O、 DMA、总线仲裁、 DRAM 控制器等的 386EX 则是 80386 微处理器的微控制器版本。嵌入式微控制器一般由一个 CPU 核和多个外围电路集成。 2、单片机属于微控制器(MCU),高端的arm(ARM9、ARM11、A8、A9)属于微处理器(MPU)。两者的区别在于MPU多了两个部件高速缓存(CACHE)、内存管理单元(MMU)。 3、裸机程序就是直接对CPU进行编程,Linux编程是基于Linux操作系统进行的编程。 4、Exynos4412启动流程:iROM→BL1→BL2→uboot→zImage(linux 内核)→挂接文件系统。 0地址就是iROM,iROM在4412内部

嵌入式Linux之RK3399:内核buildroot的emmc-img编译原理(一)

前提是你 提交于 2020-01-25 09:13:36
一、脚本分析 在sdk的根目录下有自动化脚本build.sh,build.sh里面定义了emmc-img的功能函数。 function build_emmcimg ( ) { local IMG = local ROOTFS = #如果OSNAME未定义,则定义为buildroot if [ -z ${OS_NAME} ] ; then OS_NAME = buildroot fi if [ x ${OS_NAME} = xbuildroot ] ; then IMG = rk3399-eflasher-buildroot-linux-4.4-arm64- $( date +%Y%m%d ) .img ROOTFS = ${TOP_DIR} /buildroot/output/rockchip_rk3399/images/rootfs.ext2 elif [ x ${OS_NAME} = xdebian ] ; then IMG = rk3399-eflasher-debian9-4.4-armhf- $( date +%Y%m%d ) .img ROOTFS = ${TOP_DIR} /rootfs/binary else echo "Unknow OS: ${OS_NAME} " exit 1 fi prepare_image_for_friendlyelec_eflasher

[分享] IMX6嵌入式开发板linux QT挂载U盘及TF卡

泪湿孤枕 提交于 2020-01-18 11:06:02
本文转自迅为开发板:http://www.topeetboard.com 开发平台:iMX6开发板 linux QT 系统下挂载 u 盘 如下图所示,qt 启动之后,在超级终端中使用命令“mknod /dev/sda1 b 8 1”创建 U 盘的设备节点,如下图所示。 插入 U 盘之后,如下图所示插入 U 盘之后会弹出加载信息。 在超级终端中使用命令“mount /dev/sda1 /mnt/udisk/”即可挂载 U 盘。 如下图所示。使用查找命令“ls /mnt/udisk”,可以看到 U 盘中的内容。下图中绿色文 件是作者在 U 盘中建的一个小文件,这里可以看到。 linux QT 系统下挂载 tf 卡 如果用户使用的是 tf 卡,如下图所示,tf 卡插入 tf 卡槽之后会弹出下面的信息。 如下图所示,先使用命令“midir /mnt/udisk1”,使用加载 tf 卡的命令“mount /dev/mmcblk1p1 /mnt/udisk1”,p1 是上面开发板识别出来的编号,要根据实际情况修 改。 然后使用查找命令“ls /mnt/udisk1”,可以看到 tf 卡中的文件。 来源: https://www.cnblogs.com/topeet/p/7561147.html

嵌入式面试题

让人想犯罪 __ 提交于 2020-01-17 03:31:27
参考链接: 看你会多少 记一次嵌入式底层面试 Linux面试基础题3道 一、请问uboot启动过程都做了些什么? 1、cpu刚开始初始化的时候,还未设置栈,所以先使用汇编代码,构建异常项链表,然后设置cpu为svc(特权)模式,同时关闭FIQ和IRQ(防止突发中断程序跑飞了) 注:在跳转到内核之前,要满足CPU出在SVC模式下。 2、对cp15协处理器进行设置,这里主要是关闭MMU和cache 3、进入到板级初始化阶段,这里会进行时钟、内存、串口的初始化。最后还要关闭看门狗。 4、接下来就是设置栈,为c语言准备运行环境,调用board_init_f,填充gd结构体。 5、对代码重定位,搬运到内存中去,搬运之后,跳转到内存中去执行board_init_r,这里就可以开启cache了,当然也可以不开启。然后初始化其他设备。比如flash、网卡、emmc等。初始化完之后,在执行main_loop 二、为什么uboot要关掉cache? uboot要关掉cache 根据cache的定位可以看出来,它是用来加快cpu从内存中取出指令的速度,但我们都知道,在设备上电之初,我们的内存初始化比较慢一拍,当cpu初始化了,但内存还没准备好之后,就对内存进行数据读,那么势必会造成了指令取址异常,系统就会挂了。所以,在u-boot的上电之初,就得关闭掉数据cache

嵌入式文本编译器-vi,用户管理及权限管理

[亡魂溺海] 提交于 2020-01-16 06:24:20
vi的工作模式 命令模式:控制屏幕光标的移动,字符,字或行的删除,移动复制某区域,按 i 进入插入模式,按/或:进入底行模式 插入模式:编辑文字,按ESC返回命令模式 底行模式:将文件保存或退出vi,也可以设计编辑环境,如查找字符串,列出行号等。通常底行模式也算是命令 vi的进入 vi+文件名 例: [lin@localhost ~]$ vi a.txt 如果没有a.txt文件则自动在当前目录下生成该文件 进入vi后是命令模式,要输入i才可进入插入模式才能输入文字 编辑 按i可进行编辑,当屏幕下方显示– INSERT –时,表示已进入插入模式,可以编辑文字,若想回到命令模式,保存或退出按ESC键 vi的退出 在命令模式下,按一下冒号[:]进入底行模式 :w a.txt(将编辑的内容以指定文件名a.txt保存) :wq (存盘并退出vi) :q! (不存盘强制退出vi) 删除 x(每按一次,删除光标所在位置字符) nx(例如4x,删除从光标所在位置字符开始并往后的4个字符) X(每按一次,删除光标所在位置前一个字符) nX(例如10X,删除光标所在位置前10个字符) dd(删除光标所在行) ndd(例如3dd,从光标所在行开始删除3行) 复制 yw(将光标所在处到字尾的字符复制到缓冲区中) nyw(如4yw,复制4个字符到缓冲区) yy(复制光标所在行到缓冲区) nyy(如5yy