嵌入式开发

嵌入式开发(一)虚拟机上的ubuntu系统上搭建nfs过程及遇到问题

筅森魡賤 提交于 2019-12-04 10:47:07
//找完工作了,在这所剩不多的大学时光里,尽情享受吧。 在闲时想做做毕设,所以就从头到尾搞一搞arm开发板吧 , 。 这是嵌入式开发的第一篇博客,从这开始记录接下来的点点滴滴吧,可生活,可工作。 首先,我手头有的资源有:tiny6410开发板一块,串口线,网线齐全,虚拟机上装有ubuntu12.04的PC一台,路由器一台,校园无线网,校园有线网。 先从虚拟机开始吧 , 首先,在ubuntu系统中安装nfs服务器,即 nfs-kernel-server 在联网的前提下,指令为:apt-get install nfs-kernel-server 安装好 nfs-kernel-server后,就该配置挂载目录和权限了,修改/etc/exports文件,添加如下代码并保存。 /usr/File/tiny6410nfs 192.168.0.*(rw,sync,no_root_squash,no_subtree_check) //上一行的参数解释为,/usr/File/tiny6410nfs 是自己创建的挂载目录,即nfs客户端与nfs服务器共享的目录,在开发板上理解为板子系统 与主机ubuntu共 享的目录。而192.168.0.*表示可访问nfs服务器的ip,*代表任意,192.168.0.*表示的是只要在192.168.0这个网段下的ip 都可以 挂载nfs,如果只有一个*

嵌入式开发之路

耗尽温柔 提交于 2019-12-03 07:04:57
嵌入式学习日记 目前从事嵌入式行业开发,希望通过博客记录下自己学习的点滴。嵌入式是一个相当范的概念,运用于不同的行业,像汽车电子行业、医疗电子行业、芯片行业等,不同的行业对嵌入式的要求也不尽相同。主要分为一下几类: 嵌入式单片机(如51、MPS430等) 嵌入式RAM,带操作系统的嵌入式开发(Linux、ucossii、freertos) 其中带操作系统的嵌入式开发又可以分为底层驱动开发、Linux内核开发、Linux下应用程序的开发。 嵌入式开发需要的基础知识 C语言基础 操作系统相关知识 数电、模电相关知识 数据结构 处理器架构相关知识 在具备C语言基础下就能够进行单片机相关的开发了,确保自己有较好的的算法逻辑也是嵌入式下开发的基本功。如果想进行系统级的嵌入式开发需具备以上所有的知识,但不限与我上面所写的内容。 学习目标 –STM32裸机开发 –STM32下UCOSS-II系统的学习 –STM32下freertos系统的移植开发 –Linux下C语言开发学习 –Linux下基本命令的学习 –Linux下嵌入式裸机开发 –Linux下u-boot学习 –Linux下内核学习 –Linux下驱动程序学习 –Linux下项目开发 为了促进自己学习的进步,希望自己能够在嵌入式的道路上走下去,和大家一起分享学习心得,也希望嵌入式行业的大牛能够帮助和指点我学习的不足。 来源: CSDN

嵌入式开发之系统开发篇全覆盖 嵌入式开发教程

ε祈祈猫儿з 提交于 2019-12-03 07:04:38
《深入理解嵌入式开发之系统开发篇全覆盖(MC9S12单片机、CAN技术介绍)》通过摘录了嵌入式C开发国内外著名的文献书籍,结合平时的工作经验,总结了以下台阶,希望同学们可以通过不断的走上这些台阶,提升自己的功力,达到一个嵌入式开发领域合格的工程师。 课时: 第一讲:嵌入式系统开发概述1 第二讲:嵌入式系统软件架构 第三讲:嵌入式系统开发发展趋势及技巧介绍 第四讲:嵌入式开发硬件设施 第五讲:嵌入式微软处理器介绍及void使用 第六讲:嵌入式硬件基础及宏函数指针等应用 第七讲:嵌入式开发armIO介绍 第八讲:嵌入式开发总线技术介绍 第九讲:嵌入式开发之存储器介绍 第十讲:嵌入式软件开发基础 第十一讲:嵌入式软件开发内核介绍 第十二讲:ucos介绍及指针数组讲解 第十三讲:嵌入式系统开发NUC140介绍 第十四讲:MC9S12系列单片介绍 第十五讲:MC9S12启动代码介绍及链接文件分析 第十六讲:MC9S12段映射 第十七讲:内存映射实现 第十八讲:走马灯程序 第十九讲:看门狗的使用及时钟 第二十讲:RTI实现 第二十一讲:MC9S12内存映射 第二十二讲:fls驱动寄存器介绍 第二十三讲:fls跨页读操作 第二十四讲:fls擦除 第二十五讲:flash驱动深入研究 第二十六讲:指令集介绍 第二十七讲:can基础知识介绍(1) 第二十八讲:can协议介绍 第二十九讲:CAN技术延伸

嵌入式驱动程序设计的小窍门,业界大牛总结

北慕城南 提交于 2019-12-03 07:04:11
对于嵌入式来说,嵌入式应用软件都会在特定时候访问底层固件和进行硬件控制,嵌入式驱动程序的设计是满足嵌入式系统最关键的一步,学习嵌入式对嵌入式驱动程序设计是比较关键的,那么如何学嵌入式驱动程序设计成为了关键,在这里业界大牛总结了一些嵌入式驱动程序设计的小窍门,对学习嵌入式驱动程序设计还是老有用了。 点击了解更多小窍门: http://emb.hqyj.com/VideoCourse/?lbx 首先就是我们在做嵌入式驱动程序设计使用设计模式时,在这里有一个注意的点,认真看哦: 嵌入式驱动程序设计 对于设计模式来说,设计模型就是一个用来处理那些在软件中会重复出现的问题的解决方案。 开发人员可以选择浪费宝贵的时间和预算从无到有地重新发明一个解决方案,也可以从他的解决方案工具箱中选择一个最适合解决这个问题的方案。在微处理器出现之初,底层驱动已经很成熟了,那么,为什么不利用现有的成熟的解决方案呢? 在这里就有一个小技巧咯,驱动程序设计模式大致分属以下4个类别:Bit bang、轮询、中断驱动和直接存储器访问(DMA)。 Bit bang模式:当微控制器没有内外设去执行功能的时候,或者当所有的内外设都已经被使用了,而此时又有一个新的请求,那么开发者就应该选择Bit bang设计模式。Bit bang模式的解决方案很有效率,但通常需要大量的软件开销来确保其实施的能力。Bit

嵌入式开发笔记(三)ARM基础知识

纵饮孤独 提交于 2019-12-02 21:00:53
1. ARM的编程模式 1.1当 ARM 采用的是32位架构. ARM 约定: Byte : 8 bits Halfword (半字) :16 bits (2 byte) Word : 32 bits (4 byte) 联想: 数据位宽4 byte,地址映射数据线32条 注意:Word在VC下是16bit,原因早期微软16位时就定义为16bit,后来32位时候未改换成DWord. 1.2 大部分ARM core 提供: (2) ARM 指令集(32-bit) (1) Thumb 指令集(16-bit ) (3) Thumb2指令集(16 & 32bit) 小计:早期时候Thumb指令集,每条指令16bit。缺点:有时需要两个指令完成,效率,时间。之后ARM指令集每条指令32bit,缺点:浪费资源。随后Thumb2(armV7)[16&32]。 1.3 Jazelle cores 支持 Java bytecode (支持JAVA加速) 2. ARM处理器工作模式 2.1 ARM 有7个基本工作模式: (1) User : 非特权模式,大部分任务执行在这种模式 (2) FIQ : 当一个高优先级(fast) 中断产生时将会进入这种模式 (3) IRQ : 当一个低优先级(normal) 中断产生时将会进入这种模式 (4) Supervisor :当复位或软中断指令执行时将会进入这种模式

嵌入式开发之移植OpenCv可执行程序到arm平台

耗尽温柔 提交于 2019-12-02 08:08:56
0. 序言 PC操作系统:Ubuntu 16.04 OpenCv版本:4.0 交叉工具链:arm-linux-gnueabihf,gcc version 5.4.0 目标平台:arm 编译时间:20181224 建议新手先看交叉编译的这篇文章: https://www.jianshu.com/p/0fcdce428d8f 1. 下载C++版本Eclipse 下载地址: https://www.eclipse.org/downloads/packages/ 选择Linux 64位 2. 创建C++Project 步骤1:File-New-Project..-C++Project-Next-输入Project name-Next-输入Author-Next: 步骤2:默认Debug和Release: 步骤3:输入交叉编译命令的前缀和交叉编译所在的路径并点击Finish: 说明:这里看不懂的,建议先看交叉编译的文章: https://www.jianshu.com/p/0fcdce428d8f 目录结构: 3. 编写C++代码 把Exam.cpp的代码替换为以下代码并保存: 1 #include<opencv2/core.hpp> 2 #include<opencv2/imgcodecs.hpp> 3 #include<opencv2/imgproc.hpp> 4 using

学习嵌入式开发——简介及搭建开发环境

旧城冷巷雨未停 提交于 2019-12-01 23:56:52
嵌入式技术的发展经历了单片机(SCM)、微控制器(MCU)、系统级芯片(SoC)3个阶段。 SCM——随着大规模集成电路的出现及其发展,计算机的CPU、RAM、ROM、定时数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机。 MCU——MCU的特征是满足各类嵌入式应用,根据对象系统要求扩展各种外围电路与接口电路,突显其对象的智能化控制能力。实际上,MCU、SCM之间的概念在日常工作中并不严格区分,一概以单片机称呼。随着能够运行更复杂软件(比如操作系统)的SoC的出现,“单片机”通常是指不运行操作系统、功能相对单一的嵌入式系统,但这不是绝对的。 SoC——SoC的特征是实现复杂系统功能的VLSI;采用超深亚微米工艺技术;使用一个以上嵌入式CPU/数字信号处理器(DSP);外部可以对芯片进行编程;主要采用第三方IP进行设计。 嵌入式处理器种类繁多,有ARM、MIPS、PPC等多种架构。但由于ARM处理器的文档丰富,各类嵌入式软件大多支持ARM处理器,使用ARM开发板来学习嵌入式开发是一个好选择。 基于ARM的处理器以其高速度、低功耗、价格低等优点得到非常广泛的应用,它可以应用于以下领域:为无线通信、消费电子、成像设备等产品提供可运行复杂操作系统的开放应用平台;在海量存储、汽车电子、工业控制和网络应用等领域提供实时嵌入式应用;安全系统,比如信用卡、SIM卡等。

什么是嵌入式开发?嵌入式是什么?初学者必看。

人走茶凉 提交于 2019-12-01 21:41:21
嵌入式技术是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统技术。它最初起源于单片机技术, 是各类数字化的电子、机电产品的核心,主要用于实现对硬件设备的控制、监视或管理等功能。进入21世纪计算机应用的各行各业中90%左右的开发将涉及到嵌入式开发。全球嵌入式软件市场年增长率超过12.5%,嵌入式系统带来的工业年产值达一万亿美无,中国未来三年嵌入式软件产业将保持40%以上的年复合增长率。 做软件实际上有高下之分,开发语言从机器语言、汇编到C、C++,再到红透半边天的Java、C#等,该学哪种呢?为什么有些开发者工资低,而有些开发者千金难求?为什么3年的Java高级程序员薪水仅仅8k-10k,而一个Linux底层C语言程序员两年经验就敢要10k的薪水? 还是门槛,比如月薪15k的Linux嵌入式开发职位,门槛就有 Linux系统、Shell编程、Linux开发环境、C语言、ARM硬件平台、数据结构、Linux内核、驱动程序等,粗略数数就有8道关口,他需要非常熟悉整个的计算机体系,能做出实际的产品,而Java的开发者却仅仅是会使用名叫Java的语言工具,始终高高飘在众多层次之上,开发项目非常快,甚至可以不知道OSI模型,很可能自始至终都是软件蓝领。 嵌入式开发本身也有高下之分

Linux 嵌入式驱动开发:hello world

本小妞迷上赌 提交于 2019-11-30 20:25:01
1、代码编写,只有一个文件,内容如下 文件名为:mini2440_hello_module.c #include <linux/kernel.h> #include <linux/module.h> static int __init mini2440_hello_module_init(void) { printk("Hello, Mini2440 module is installed !\n"); return 0; } static void __exit mini2440_hello_module_cleanup(void) { printk("Good-bye, Mini2440 module was removed!\n"); } module_init(mini2440_hello_module_init); module_exit(mini2440_hello_module_cleanup); MODULE_LICENSE("GPL"); 注解: A、两个头文件是必须的,不要问为什么 B、mini2440_hello_module_init() 驱动加载函数,也是必须的 C、mini2440_hello_module_cleanup() 驱动卸载函数,也是必须的 D、module_init(mini2440_hello_module_init)

嵌入式开发之C基础学习笔记02--第一个例子分析

。_饼干妹妹 提交于 2019-11-30 19:33:22
1.C语言程序结构和书写规范 系统头文件 #include <stdio.h> 双引号:自定义库文件 尖括号:操作系统下规定的库文件 /*this is a helloword program*/ <---注释 #include <stdio.h> <---编译预处理命令 main() <---主函数 { printf("helloworld") <---输出语句 } 2.例子操作: 1) 编写源代码 vim helloworld.c /*This is a C Hello World Program*/ #include <stdio.h> main() { printf("Hello World!\n"); } 2)编译源代码,生成可执行文件 thinkpad:~/Desktop$ gcc helloworld.c -o helloworld 3) 执行可执行文件,打印输出结果 thinkpad:~/Desktop$ ./helloworld Hello World! 3.原理分析:  虽然我们称Gcc是C语言的编译器,但使用gcc由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤∶预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和链接(Linking)。