文档库 最新最全的文档下载
当前位置:文档库 › 嵌入式硬件---通过点亮LED分析嵌入式裸机程序的开发步骤

嵌入式硬件---通过点亮LED分析嵌入式裸机程序的开发步骤

嵌入式硬件---通过点亮LED分析嵌入式裸机程序的开发步骤
嵌入式硬件---通过点亮LED分析嵌入式裸机程序的开发步骤

S3C2440A has 130 multi-functional input/output port pins and there are eight ports as shown below:

- Port A(GPA): 25-output port

- Port B(GPB): 11-input/out port

- Port C(GPC): 16-input/output port

- Port D(GPD): 16-input/output port

- Port E(GPE): 16-input/output port

- Port F(GPF): 8-input/output port

- Port G(GPG): 16-input/output port

- Port H(GPH): 9-input/output port

- Port J(GPJ): 13-input/output port

端口控制描述

端口控制寄存器(GPACON-GPJCON)

端口数据寄存器(GPADAT-GPJDAT)

端口上拉寄存器(GPBUP-GPJUP)

复用控制寄存器

外部中断控制寄存器

假设,有4个LED灯,分别接在GPF0~GPF3上,低电平点亮

GPF有7个I/O口,三组寄存器GPFCON,GPFDAT,GPFUP

//包含头文件区

#include "2440addr.h" //系统文件

#include "2440lib.h"

#include "def.h"

#include "uart.h"

void Main(){

//第一步,设置系统时钟

memcpy((unsigned char *)0x0,(unsigned char

*)0x30000000,1000);

//调用2440lib.c中的函数

SetSysFclk(FCLK_200M);//设置系统时钟为200M

ChangeClockDivider(1,1);//设置分频为1:2:4

CalcBusClk(); //计算总线频率

//第二步:初始化串口

Uart_Select(0);

Uart_Init(0,115200);

//第三步:配置GPF寄存器

rGPFCON = (rGPFCON | 0xffff) & 0xffffff55; //设置GPF为输出口rGPFUP &= 0xfff0; //使能上拉

rGPFDAT = 0xff; //初始化

//第四步:进入大循环

while(1){

rGPFDAT = 0xFE; //点亮

}

}

编译工程,点击工具栏上的【make】按钮开始编译,如果没有错误,就可以下载到开发板上运行,这时,就需要使用AXD工具。点击【Debug】工具按钮,运行AXD。需要指定HJTAG工具连接到开发板上,选择【Options】菜单下载的【Configure Target】,

在弹出的Choose Target对话框中添加HJTAG的配置文件(H-JTAG安装目录下的H-JTAG.dll文件),点击【Configure】按钮,完成H-JTAG的配置使用AXD进行调试时,在NandFlash中不应该有其他的程序,否则,会使运行不正常!应先擦除NandFlash。

在调试之前,应该对SDRAM进行配置,因为程序是要下载到内存中运行的,因此,首先需要对SDRAM进行正确配置,选择【Options】菜单下的【Configure Interface】,在弹出的对话框中选择【Session File】标签页,勾选【Run Configuration Script】复选框,加入2440init.txt配置脚本文件。重启AXD

如果电脑没有并口,也可以使用J-Link连接到开发板。首先,需要安装J-Link的驱动,然后添加J-Link的配置文件(JLinkRDI.dll),方法同上。

嵌入式硬件工程师与软件工程师的区别

嵌入式硬件工程师与软件工程师的区 别 嵌入式硬件工程师与软件工程师都有哪些不同呢?具体工作都包括什么?就业前景如何?工资待遇如何?这些都是大家十分关心的问题,尤其是对于即将走向工作岗位的学生来说,这些问题直接影响到他们的择业及将来的发展方向。 下面从几个方面来解答这些问题。 什么是嵌入式硬件工程师? 随着嵌入式技术的普及,硬件工程师的性质也有所改变。嵌入式硬件工程师与我们平常所说的硬件工程师不同。嵌入式硬件工程不但要求具备硬件工程师的基本技能,还必须完成部分软件工程师的工作,例如:底层驱动的开发嵌入式操作系统的裁剪,移植;GUI、文件系统等软件的移植;基于嵌入式操作系统的底层驱动程序的设计等。 什么是嵌入式软件工程师? 嵌入式软件工程师与我们平常说的软件工程师不同。 我们平常说的软件工程师大部分指的是windows和linux操作系统下应用软件的开发人员,硬件平台是基于PC机的。而嵌入式软件工程师则是指在wince、linux等嵌入式操作系统下进行用户应用软件开发的人员,硬件平台则是基于嵌入式产品的(例如:手机、PDA等)。软件开发工具也有所区别,嵌入式软件开发一般使用的是嵌入式系统专用的开发工具,例如wince下的evc,和linux下的qt等。 嵌入式软、硬件工程师职能、工作性质的区别 嵌入式硬件工程师的主要工作包括: 方案设计 根据客户需要进行可行性分析、整体功能设计、硬件成本预算等,在完成功能的同时还必须考虑到产品的生产加工、后期维修等各方面问题。 元件的选型 选择元件时必须根据每个元件特性和电路板特性,成分考虑到性能,干扰,功耗等问题。

电路的设计 元件的位置,产品的功耗,各部分功能完整性,抗干扰等 电路板设计 要求设计出的电路板,安全可靠,美观,拆装方便。 系统集成及调试 产品样品的组装集成及硬件调试。 底层驱动程序设计 根据硬件资源进行驱动程序的设计。 操作系统的裁剪移植* 根据需要选择最优的操作系统进行裁剪和移植 GUI及文件系统等软件移植* 根据需要加入GUI及文件系统等软件。 注:*表示该工作有可能不需要。 嵌入式软件工程师的主要工作包括: 人机交互程序设计 图形用户界面(GUI)程序设计 用户应用软件设计 软件系统测试 举个简单的例子: 就拿手机的设计来说,硬件工程师需要根据要求完成以下工作: 1、根据用户的需求例如:直板还是翻盖的,尺寸多大,功能要求(MP3,GPRS,触摸屏等),成本要求等。对整个方案进行设计。 2、选择最优的元件,例如液晶屏、CPU等 3、进行电路的设计 4、集成和调试 5、底层驱动程序设计 6、移植wince、linux或者symbian等嵌入式操作系统 软件工程师需要完成以下工作

嵌入式点亮一个LED灯的程序

飞凌OK6410开发板(裸板)第一个点亮LED灯程序,主要的C程序,完整程序请下载附件。 #define rGPMCON (*(volatile unsigned *)(0x7F008820)) #define rGPMDAT (*(volatile unsigned *)(0x7F008824)) #define rGPMPUD (*(volatile unsigned *)(0x7F008828)) void msDelay(int time) { volatile unsigned int i,j; for(i = 0; i < 2000000; i++) for(j=0; j

1.设计要求 EM-STM3210E开发板上有一个LED灯D1,编写程序点亮该灯。 2.硬件电路连接 在开发板上,D1与STM32F103ZE芯片上的引脚PF6相连,如下图所示。 3.软件程序设计

根据任务要求,程序内容主要包括: 1、配置Reset and clock control (RCC)以使能GPIOF端口模块的时钟 2、配置GPIOF端口的PF6引脚(50MHz,推挽输出) 3、调用STM32标准固件库函数GPIO_WriteBit以令PF6引脚输出高电平,从而点亮LED灯D1。 整个工程用户只需要实现源代码文件:main.c,其他工程文件由MDK和STM32标准固件库提供。 main.c文件的内容如下: [cpp] /** ********************************************************** ******************** * @file main.c * @author Max Liao * @version * @date 02-Novenber-2012 * @brief Main program body ********************************************************** ******************** */ /* Includes ------------------------------------------------------------------*/ #include "stm32f10x.h" /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/

如何成为linux嵌入式工程师

如何成为linux嵌入式工程师 1、Linux开发工程师(每天学习6小时,用一个月时间) 首先成长为一名Linux开发工程师,这是最基本的目标,他应该具 备如下的素质: (1)了解Linux基本概念和基本操作(历史,文化,起源)(命令行,配置,操作,开发模式) (2)会使用Linux平台下的编辑器vi(默认安装,占内存小,方便 向嵌入式移植) (3)会使用Linux平台下的编译器GCC(相应的十几个命令行参 数) (4)会使用Linux平台下的管理工具Make(与Makefile相配合,尤其用于大项目中多平台移植的情况下) (5)会使用Linux平台下的调试器GDB(可以了解底层硬件,及 汇编指令) 2、嵌入式工程师 他更关心的是将来在哪一目标机上运行,不关心操作系统,进行的 更多与编程相关的工作

(1)合格的C程序的程序员(理解基本的控制结构:循环、分支、 数组、指针) (2)基本的编程思想(编程实践中总结算法) (3)程序的编译和链接 (4)可执行文件内部(段、起始地址、如何加载执行) (5)目标机处理器体系结构 (6)知道处理器的外设即System on Chip(内部存储结构及外设 驱动) (7)汇编语言及指令(主要是用在加载过程中) 3、系统工程师 系统工程师夹在驱动工程师及应用工程师这两个层次之间,他要对系统有一个整体的概念,系统主要是指操作系统,往往理论有余而实践 不足 (1)进程管理与调度(知道进程间的切换与调度,多任务)(2)内存管理(建立MMU页表,知道从虚地址到物理地址的映射)(3)驱动管理(管理设备,编写设备驱动,加载设备驱动)

(4)文件系统(制作文件系统,文件系统的读写,甚至驱动有时也 被当成文件系统来管理) (5)网络协议知识(协议实现作为上层应用与底层驱动之间的 衔接) (6)图形系统知识(支持多窗口及管理窗口,包括窗口切换,窗口 移动和覆盖) 4、嵌入式Linux系统工程师 (1)嵌入式Linux基本概念 (2)交叉编译 (3)Linux内核开发和调试工具 (4)启动代码移植(修改Uboot,Vivi等) (5)内核交叉编译(Linux不支持芯片时要芯片级的移植,支持芯 片时要板级的移植) (6)根文件系统制作 (7)设备驱动程序开发

应聘硬件工程师或研发类工作资料集锦_硬件工程师_电子工程师_嵌入式工程师_单片机_笔试题目_面试题目

用一个宏定义FIND求一个结构体CTYPE里某个变量CNUM相对了CTYPE的编移量。 如:stuct student { int a; char b[20]; double ccc; } 则: FIND(student,a); //等于0 FIND(student,b);//等于4 二楼的可以。 #define FIND(type,member) (int)(&( ((type*)0)->member) ) struct student { int a; char b[20]; double ccc; }; int main(int argc,char* argv[]) { int i=FIND(student,a); //等于0 i=FIND(student,b);//等于4 return 0; } 调试结果是对的。 题目出得很好: 其实就是考下这个宏offsetof ,定义在文件stddef.h 中. #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) TYPE是某struct的类型0是一个假想TYPE类型struct,MEMBER是该struct中的一个成员. 由于该struct的基地址为0, MEMBER的地址就是该成员相对与struct头地址的偏移量. 再往深处,接触过Linux Kernel的会知道这个宏container_of,就嵌套了宏offsetof ,其在Linux Kernel中的应用非常广泛,它用于获得某结构中某成员的入口地址. 1.运放求放大倍数的 2.三极管基础知识(放大区,截至区,饱和区) 3.并联RC变换成串联RC 4.运放求反馈的 5.单片机和74hc595硬件连接和编程 6。数据结构-----队列,建立一个队列,写数,读数。 一简答题

硬件、嵌入式工程师笔面试

笔面试题 1、技术类 (1)描述一下你的项目 (2)单片机I/O口需要注意的问题 驱动能力不强,高电平驱动时需要加上拉电阻; 电平匹配,上拉或分组。 51单片机的P0口常用作数据线和低8位地址线、P2常用作高8位地址线。 (3)单片机不能启动的原因 1)晶振没有振荡,测量晶振是否起振; 2)一直在复位状态,检查复位电路; 3)程序飞了,检查程序; 4)程序编制错误,检查程序; 5)单片机坏了,更换单片机芯片; 6)硬件电路错误。 (4)单片机最小系统 1)复位电路: 当引脚9出现2个机器周期以上高电平时,单片机复位,程序从头开始运行。

2)时钟电路:有振荡器电路产生频率等于晶振频率,这时用的是外界晶振。 也可以又外部单独输入,此时XTAL2脚接地,时钟信号由XTAL1输入。 3)电源电路:VCC和GND引脚。 4)程序下载电路。(并不严格包含) (5)哈弗结构和冯洛伊曼结构 哈佛结构:是一种将程序指令储存和数据储存分开的存储器结构。中央处理器首先到程序指令储存器中读取程序指令内容,解码后得到数据地址,再到相应的数据储存器中读取数据,并进行下一步的操作(通常是执行)。程序指令储存和数据储存分开,数据和指令的储存可以同时进行,可以使指令和数据有不同的数据宽度,与冯.诺曼结构处理器比较,哈佛结构处理器有两个明显的特点: 1、使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存; 2、使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。 改进的哈佛结构,其结构特点为: 1、使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存,以便实现并行处理; 2、具有一条独立的地址总线和一条独立的数据总线,利用公用地址总线访问两个存储模块(程序存储模块和数据存储模块),公用数据总线则被用来完成程序存储模块或数据存储模块与CPU之间的数据传输; 哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和储存的,执行时可以预先读取下一条指令。目前使用哈佛结构的中央处理器和微控制器有很多,除了上面提到的Microchip公司的PIC系列芯片,还有摩托罗拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的A VR系列和安谋公司的ARM9、ARM10和ARM11。 冯·诺伊曼结构:也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的

嵌入式工程师工作要求

嵌入式软件工程师 职位名称:嵌入式软件工程师性别:男 待遇: 6000-10000人数: 5 2011-1-24 人气: 2306时间: 2:52:01工作方式:全职 职位描述及要求: 1. 基于ARM平台编写linux底层驱动程序以及应用层程序的开发; 2. 本科及以上学历,计算机、自动化或相关专业,三年以上嵌入式系统软件开发经验优先; 3. 精通嵌入式linux C/C++语言程序开发,熟悉至少一种处理器架构及其汇编; 4. 掌握嵌入式驱动程序的开发及调试,熟悉板级调试及相关仪器使用; 5. 掌握嵌入式应用层程序的开发,熟悉QT编程者优先; 6. 有硬件设计能力者优先; 7. 具备良好的文档编写能力和习惯,能够编写规范的概要和详细设计文档; 8. 对程序设计有精益求精的态度,良好的团队合作精神和沟通能力。

熟悉TCP/IP,FTP, TFTP,TELNET, Radius等协议 职位描述: 1、熟悉ARM体系架构、熟悉相应外围接口电路 2、三年以上linux驱动开发经验; 3、有bootloader、嵌入式系统移植经验; 具有嵌入式下的 USB、Audio、LCD、Camera、Flash、bootloader ,电源管理等驱动程序的开发经验; 嵌入式硬件工程师 职位名称:嵌入式硬件工程师性别:男 待遇: 6000-10000人数: 5 2009-2-22 人气: 3180时间: 21:08:09工作方式:全职 职位描述及要求: 必须两年以上工作经验。 1、熟悉51系列单片机、熟悉嵌入式系统硬件电路设计; 2、Cadence、Pads、Altium Designer(protel)三种软件中熟练掌握一种用法,能够轻松绘制4层及4层以下PCB板。 2、单片机、嵌入式系统的产品样机焊接、调试及测试。 3、有扎实的模拟电路、数字电路设计及分析能力。 4、有大量的项目开发经验者优先、3年以上工作经验者优先。

LED驱动程序设计

LED驱动程序设计 分类:ARM系统进阶班(arm裸机程序)2012-08-24 13:23 1561人阅读评论(0) 收藏举报 首先声明,此文章是基于对国嵌视频教程中tiny6410有关视频教程的总结,为方便大家的复习。再次予以感谢,感谢国嵌各位老师为我们提供如此好的视频教程,为对于想要迈入嵌入式大门却迟迟找不到合适方法的学子们指引一条光明的方向。好了,接下来步入正题,此处将介绍tiny6410 LED驱动程序的设计。

2 下面来看看tiny6410关于LED 的原理图如图(1)所示:

图1 LED原理图 3 LED实例,代码如下所示:(代码摘自\光盘4\实验代码\3-3-1\src\main.c) main.c [cpp]view plaincopy 1./********************************************************** 2.*实验要求:用Tiny6410上的4个LED资源实现跑马灯程序。 3.*功能描述: Tiny6410用下面4个引脚连接了LED发光二极管,分别是 4.* GPK4--LED1 5.* GPK5--LED2 6.* GPK6--LED3 7.* GPK7--LED4 8.* 本程序将控制这四个管脚的输出电平,实现跑马灯的效果 9.*日期: 2011-3-10 10.*作者:国嵌 11.**********************************************************/ 12.#include "def.h" 13.#include "gpio.h" 14. 15.#define LED1_ON ~(1<<4) 16.#define LED2_ON ~(1<<5) 17.#define LED3_ON ~(1<<6) 18.#define LED4_ON ~(1<<7) 19. 20.#define LED1_OFF (1<<4)

嵌入式助理工程师硬件试题

嵌入式硬件助理工程师认证考试试题题库 一、选择题 1、以下说法不正确的是(B )。 A、任务可以有类型说明 B、任务可以返回一个数值 C、任务可以有形参变量 D、任务是一个无限循环 2、用图形点阵的方式显示一个16*16点阵汉字需要(B )字节。 A、8 B、32 C、16 D、64 3、下列描述不属于RISC计算机的特点的是(C)。 A.流水线每周期前进一步。 B.更多通用寄存器。 C.指令长度不固定,执行需要多个周期。 D.独立的Load和Store指令完成数据在寄存器和外部存储器之间的传输。 4、存储一个32位数0x2168465到2000H~2003H四个字节单元中,若以大端模式存储,则 2000H存储单元的内容为( D)。 A、0x21 B、0x68 C、0x65 D、0x02 5、μCOS-II中对关键代码段由于希望在执行的过程中不被中断干扰,通常采用关中断的方式,以下X86汇编代码正确而且不会改变关中断之前的中断开关状态的是(D) A. 先CLI、执行关键代码、再STI B. 先STI、执行关键代码、再CLI C. 先POPF、CLI、执行关键代码、再PUSHF D. 先PUSHF、CLI、执行关键代码、再POPF。 6、RS232-C串口通信中,表示逻辑1的电平是(D )。 A、0v B、3.3v C、+5v~+15v D、-5v~-15v 7、ARM汇编语句“ADD R0, R2, R3, LSL#1”的作用是(A)。 A. R0 = R2 + (R3 << 1) B. R0 =( R2<< 1) + R3 C. R3= R0+ (R2 << 1) D. (R3 << 1)= R0+ R2 8、IRQ中断的入口地址是( C)。 A、0x00000000 B、0x00000008 C、0x00000018 D、0x00000014 9、S3C2420X I/O口常用的控制器是(D)。 (1)端口控制寄存器(GPACON-GPHCON)。

嵌入式LED灯显示

【设计题目】 矩阵LED字符显示控制系统设计 【设计目的】 1.掌握无操作系统下的硬件软件设计原理和方法; 2.进一步熟悉ARM 处理器的基本结构、指令集、存储系统以及基本接口编程; 3.熟悉嵌入式系统各部件的硬件初始化过程以及基本IO控制方法。 4.掌握矩阵LED 的应用原理 【设计内容】 1.利用sys_init初始化程序,利用串口实现PC和开发板的数据通信; 2.编写S3C2410X 处理器的点阵屏驱动程序; 3.编写S3C2410X 处理器的点阵屏应用程序。 4. 当程序运行等待要求从串口输入学生姓名的字符串在矩阵LED上显示出来。【实验环境】 硬件:Embest EduKit-IV 平台,ULINK2 仿真器套件,PC 机; 软件:μVision IDE for ARM 集成开发环境,Windows XP。 【相关知识综述】 背景知识、原理算法等 一、硬件部分 1.点阵屏的结构电路

图1点阵屏的结构电路 图上QL1-QL16为行驱动信号,每个信号控制一行, LR1~LR16 是点阵屏的列驱动信号,每一个信号控制一列。当行信号为高电平而列信号为低电平,对应的LED 就会亮。 2,S3C2410与点阵屏的连接 LL1 LL8 LL7 LL9

图2 S3C2410ARM处理器与两片CD4094连接得到16位行选信号图以上电路可以通过S3C2410GPIO口把CPU的并行数据(16位两个字节的数据)打入到两个CD4094芯片中并锁存起来变成LL1-LL16的行选信号。 各信号的作用如下表1;

3.点阵屏的保护电路 图3 点阵屏的保护电路图 为了保护LED 屏加了对应的电阻实现行限流作用,即LL1-LL16变为RQ1-RQ16 4.LED 的驱动 加入行驱动电路的目的是实现LED 灯的驱动。这样由RQ1-RQ16变为行驱动信号QL1-QL16。Q11-QL16为图1中的行驱动信号。

嵌入式硬件工程师岗位工作职责范本

岗位说明书系列 嵌入式硬件工程师岗位工 作职责 (标准、完整、实用、可修改)

编号:FS-QG-68741嵌入式硬件工程师岗位工作职责Embedded hardware engineer job responsibilities 说明:为规划化、统一化进行岗位管理,使岗位管理人员有章可循,提高工作效率与明确责任制,特此编写。 简介:嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。从应用对象上加以定义,嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。 嵌入式职位描述(模板一) 岗位职责:

1、负责智能硬件产品的底层软件开发; 2、负责智能硬件产品的生产测试软件开发; 3、负责智能硬件产品人机交互开发; 4、负责蓝牙等接口开发。 任职要求: 1、本科及以上学历; 2、具有良好的逻辑思维能力,学习能力强; 3、有良好的C语言基础,能够快速学习新的Soc的SDK,并利用其开发相关应用; 4、熟悉主流单片机系统的开发环境编程(KEIL、IAR等),调试,烧录; 5、熟悉蓝牙、wifi等常见的无线通信协议,有做过低功耗蓝牙产品经验者优先; 6、熟悉UART、SPI、I2C、USB等接口; 7、有生产测试软件开发相关经验者优先; 8、英文阅读能力良好,能快速学习新的硬件设备的SPEC 文档; 9、能够顶住比较大的工作压力,能够跟团队成员融洽相

嵌入式软件工程师

软件工程师笔试题(C/C++) 2008-03-25 18:19 预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3). 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 4). 如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。 2. 写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B) ((A) <= (B) (A) : (B)) 这个测试是为下面的目的而设的: 1). 标识#define在宏中应用的基本知识。这是很重要的,因为直到嵌入(inline)操作符变为标准C的一部分,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。 2). 三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。 3). 懂得在宏中小心地把参数用括号括起来 4). 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事? least = MIN(*p++, b); 3. 预处理器标识#error的目的是什么? 如果你不知道答案,请看参考文献1。这问题对区分一个正常的伙计和一个书呆子是很有用的。只有书呆子才会读C语言课本的附录去找出象这种 问题的答案。当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。 死循环(Infinite loops)

嵌入式工程师的感悟

我9月份刚找完工作,现在是在搞飞思卡尔的单片机,主要是我喜欢这个方向。 嵌入式一般有两个方向,应用和底层系统。写应用的一般是写网络编程也就是TCP/IP和linux 高级编程,写图形介面的也有,去面试过几家,有安防公司,游戏公司之类的。 写底层的一般就是写单片机,FPGA,linux内核定制,驱动之类的。这类的工作要求有点小高。有些公司还会要求你会PCB,起码要看得懂电路原理图,可以跟据原理图来写程序,一般一些工业控制公司会招这样的人,不过招的不多,而且都是要求有几年的工作经验,起码要写过几个嵌入式的项目,而且不同的公司要求也大不相同(主要是各个公司用的芯片不同)。 面对如此火热的行业,如何才能成为嵌入式Linux开发工程师?成为一名合格的嵌入式Linux开发工程师需要学习哪些知识? 一:C语言嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,通过大量编程实例重点理解C语言的基础编程以及高级编程知识。包括:基本数据类型、数组、指针、结构体、链表、文件操作、队列、栈等。 二:Linux基础Linux操作系统的概念、安装方法,详细了解Linux下的目录结构、基本命令、编辑器VI ,编译器GCC,调试器GDB和Make 项目管理工具, Shell Makefile脚本编写等知识,嵌入式开发环境的搭建。 三:Linux系统编程重点学习标准I/O库,Linux多任务编程中的多进程和多线程,以及进程间通信(pipe、FIFO、消息队列、共享内存、signal、信号量等),同步与互斥对共享资源访问控制等重要知识,主要提升对Linux应用开发的理解和代码调试的能力。 四:Linux网络编程计算机网络在嵌入式Linux系统应用开发过程中使用非常广泛,通过Linux 网络发展、TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、Web编程开发等方面入手,全面了解Linux网络应用程序开发。重点学习网络编程相关API,熟练掌握TCP协议服务器的编程方法和并发服务器的实现,了解HTTP协议及其实现方法,熟悉UDP广播、多播的原理及编程方法,掌握混合C/S架构网络通信系统的设计,熟悉HTML,Javascript等Web编程技术及实现方法。 五:数据结构与算法数据结构及算法在嵌入式底层驱动、通信协议、及各种引擎开发中会得到大量应用,对其掌握的好坏直接影响程序的效率、简洁及健壮性。此阶段的学习要重点理解数据结构与算法的基础内容,包括顺序表、链表、队列、栈、树、图、哈希表、各种查找排序算法等应用及其C语言实现过程。 六:C++ 、QT C++是Linux应用开发主要语言之一,本阶段重点掌握面向对象编程的基本思想以及C++的重要内容。图形界面编程是嵌入式开发中非常重要的一个环节。由于QT具有跨平台、面向对象、丰富API、支持2D/3D渲染、支持XML、多国语等强大功能,在嵌入式领域的GUI 开发中得到了广范的应用,在本阶段通过基于QT图形库的学习使学员可以熟练编写GUI程序,并移植QT应用程序到Cortex-A8平台。包括IDE使用、QT部件及布局管理器、信息与槽机制的应用、鼠标、键盘及绘图事件处理及文件处理的应用。

嵌入式硬件开发工程师

嵌入式硬件开发工程师 职业概述: 嵌入式硬件开发工程师主要编写嵌入式系统硬件总体方案和详细方案,要求理解嵌入式系统架构,有一定的C语言基础,熟悉ARM、PROTEL设计软件,有四层板开发经验。 工作内容: 编写嵌入式系统硬件总体方案和详细方案,进行硬件选型(单片机、DSP或者其他处理器)及系统分析; 负责硬件详细设计及实现,包含原理设计、PCB layout、硬件调试; 参与系统移植以及驱动的开发调试; 编写产品技术说明书; 负责对客户的技术支持。 职业要求: 电子、自动化、通讯或相关专业本科以上学历。 熟悉硬件开发流程;良好的电子电路分析能力;熟练掌握Protel、OrCAD、PADS 等原理图与PCB设计工具;良好的沟通和团队协作能力。 薪资行情: 一般月薪范围在3000—8000元。嵌入式硬件开发工程师的月薪范围一般在2000—10000元之间。从工作经验的角度看,刚刚毕业工作的学生和具有1-2年工作经验的嵌入式硬件开发工程师的月薪通常在两三千左右,具有3-5年工作经验者的月薪通常在3000-7000元之间,拥有5年以上工作经验者则一般可拿到8000元甚至更高的月薪,通常经理级的嵌入式硬件开发人员的月薪都可拿到1 万-1.5万之间;从学历角度看,一般具有本科或硕士学历者的月薪在3000-10000元之间,大专以上学历者一般在2000-4000元之间。 职业发展路径: 成为优秀的嵌入式硬件开发工程师需具备以下技能:由需求分析至总体方案、详细设计的规划能力;熟练运用设计工具、设计原理图、PCB板的能力;熟练运用单片机、DSP、PLD、FPGA等进行软硬件开发调试的能力;熟练运用仿真工具、示波器、信号发生器、逻辑分析仪等调测硬件的能力;掌握常用的标准电路的设计能力,如复位电路、常用滤波器电路、功放电路、高速信号传输线的匹配电路等;故障定位、解决问题的能力;设计文档的组织编写技能。 → 产品研发经理 技术经理 嵌入式系统开发工程师 嵌入式系统测试工程师 IT项目经理

嵌入式工程师试用期工作总结

嵌入式工程师试用期工作总结 篇一:嵌入式个人工作总结 学号:114116001203姓名:马冯生 1.个人工作 (1)结合138 使用手册,以及嵌入式系统相关的综述类书籍,对于嵌入式系统所需的硬件和开发环境有了直观的了解。并在私下安装虚拟机,在其上安装操作系统,加深对于嵌入式的理解。 (2)学习了系统下相关的命令。 (3)对于教学实验箱说明书进行仔细阅读,理解了箱上各个模块对应的功能,研究了外围接口的特性以及硬件编程的原理。 (4)对于源程序中设计的,补充了相应的知识。 (5)对于直流电机的相关原理以及对其进行控制的技术进行了复习。 (6)对于源代码中直流电机转速的

控制语句进行了研究。 (7)对于交通灯的工作原理进行了了解,掌握了对其进行灵活控制的方法。 2.遇到的问题 (1)本组的成员都没有学过,所以在对于源代码的分析中遇到了不小的挑战,很多指令都难以理解其含义和作用,所以我们小组成员利用实验的间隙,通过阅读相关资料,理解了特定指令所具有的作用,为后面灵活运用代码进行程序的改编打下了基础。 (2)由于对程序的运行流程并不熟悉,在实际操作中经常会遗漏一些环节。例如,在运行到了时,我们所设想的直流电机并没有想象中的结果,最后经过逐一的排查,发现我们并没有编译程序。 (3)在运行过程中遇到了,导致蜂鸣器一直处在工作的状态,系统控制端出现重新启动的状态。通过我们小组成员的讨论和实验,发现在按下9键后,程序中有蜂鸣的代码效果,从而解决了这个问题。

3.个人工作评价 首先,由于知识的欠缺,我利用课后时间,对于系统,微机原理,等等进行了恶补,可以说我已经尽力了。但是,更广阔的知识面显然会使我大受裨益。 其次,作为一名材料学院的学生,本身的研究方向与嵌入式可以说关系不大,不过由于当今社会,嵌入式作为一个研究的热点,而且,受益于该技术所使用的各种家用电器和电子设备充斥着我们生活的方方面面,因此,我满怀着憧憬与期待的选择了这门课。在课堂上,老师对于嵌入式系统的软件和硬件的构成的讲解,使我对这门学科开始有了了解,而课后的相关知识的补充强化了我的理解。在最后的实验课中,第一次接触到了嵌入式开发所使用的设备,当第一次程序按照我的指令成功运行后,成功的喜悦难以言表。作为绝对的新手,在实验中难免要同组的同学多多提点,但在某些环节,我也有自己的优势,也对于这个团队做出了我应有的贡献。在

嵌入式键盘及LED驱动实验

《嵌入式系统设计》 实验报告 (2011-2012学年第2学期)

实验三键盘及LED驱动实验—C语言实现方法 一、实验目的 1.学习键盘及LED驱动原理。 2.掌握ZLG7289芯片的使用方法。 二、实验内容 通过ZLG7289芯片驱动17键的键盘和8个共阴极LED,将按键值在LED上显示出来。 三、预备知识 1.掌握在ARM SDT 2.5或ADS1.2集成开发环境中编写和调试程序的基本过程。2.了解ARM应用程序的框架结构。 3.了解μC/OS-II多任务的原理。 四、实验设备及工具 硬件:ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上。 软件:PC机操作系统win98、Win2000或WinXP、ARM SDT 2.51或ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序 五、实验原理 ZLG7289A是一片具有串行接口的,可同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成LED显示﹑键盘接口的全部功能。 ZLG7289A内部含有译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式。此外,还具有多种控制指令,如消隐﹑闪烁﹑左移﹑右移﹑段寻址等。 ZLG7289A具有片选信号可方便地实现多于8位的显示或多于64键的键盘接口。其特点如下: a.串行接口无需外围元件可直接驱动LED。 b.各位独立控制译码/不译码及消隐和闪烁属性。 c.(循环)左移/(循环)右移指令。 d.具有段寻址指令方便控制独立LED。 e.键盘控制器内含去抖动电路。 表2-5 引脚说明 引脚名称说明 1 , 2 VDD 正电源 3 ,5 NC 悬空 4 VSS 接地 6 /CS 片选输入端,此引脚为低电平时,可向芯片发送指令及读取键盘数据

嵌入式软件工程师职业规划及计划

---------------------------------------------------------------范文最新推荐------------------------------------------------------ 嵌入式软件工程师职业规划及计划 嵌入式软件工程师职业规划及计划 嵌入式的开发是个非常长的战线,嵌入式入门难,想要各个突破至少也得需要两年的时间。 在这里,嵌入式技术分为三层。底层基于硬件的开发、软件平台的特性开发、应用场景和市场的分析。各层需要的技能也会不同。 底层基于硬件的开发需要的技能。 电路知识,数电、模电、微机原理、单片机原理、汇编、C语言。硬件平台包含多个器件。在初始设计的时候就要充分考虑几年内不会有大的变动。因为一旦开版投产成本都相当高的。包含了电路设计和驱动开发两方面的工作。硬件的换代一般3到5年。有的甚至更长时间。 软件平台的特性开发需要的技能。 对于简单逻辑的一般没有操作系统很简单时序的运算嵌入式软件工程师职业规划及计划。常使用8位一下的硬件。扩展性比较低。一般通过汇编直接编写。对于越来越多的电子产品支持多种功能的集成,使得软件平台越来越复杂。于是出现了操作系统来管理协调 1 / 11

多个程序之间的调度协调。让嵌入式平台在硬件不变的情况下提高了功能和性能。需要的知识,操作系统、TCP/IP协议、高级编程语言(C/C++/JAVA/Dephie)、软件工程、数据结构、图像处理、数据库等。实际在正规的大公司中只需要了解这里的两到三点就可以完全胜任平时的工作了嵌入式软件工程师职业规划及计划。毕竟要研究透所有的知识要花大量的时间。很多公司也只希望你把一部分工作做好就可以了。太强了留不住人的。根据实际需求和岗位使用不同的技术。应用场景和市场的分析 这部分是站在最前沿的。它引导着整个产业链的发展方向。这样的人通常很大程度基于经验了。要了解用户的真正需求。了解市场的发展趋势。还要了解目前硬件技术到达什么程度,是否可以满足需求。这里需要考验人的眼光。要在竞争对手之前看到商机。引导客户使用现有技术嵌入式软件工程师职业规划及计划。一般做这一部分工作的都是技术型企业的老总要对行业的走向作出清晰的判断。这些决定非常重要。不管是初学者还是有一定经验工作经验的嵌入式开发者,想要在这个领域胜出,必要有到一定技能的。 嵌入式的应用主要是几个方向: 一是系统开发:侧重开发环境搭建、内核原理、交叉

嵌入式实验四(Linux 内核移植及 LED 驱动测试)

实验四 Linux 内核移植及 LED 驱动测试 一、实验目的: 1.熟悉 Linux 内核基本目录结构,为后续 Linux 底层开发做准 备,熟悉 Linux 内核的配置及编译过程。 2.了解嵌入式 Linux 驱动开发基本方法,熟悉嵌入式 Linux 字 符设备驱动的开发框架。 二、实验内容: 1.下载或拷贝 Linux-3.14 源码。 2.针对实验箱配置内核。 3.编译内核并测试。 4.利用 Exynos4412 的 GPX2_7、GPX1_0、GPX2_4、GPX3_0 这 4 个 I/O 引脚控制 4 个 LED 发光二极管,使其闪烁。 三、实验原理: 1.Linux内核是Linux操作系统的核心,也是整个Linux功能 体现。它是用C语言编写,符合POSIX标准。Linux最早是由芬兰 黑客 Linus Torvalds为尝试在英特尔X86架构上提供自由免费的类Unix操作系统而开发的。该计划开始于1991年,这里有一份Linus Torvalds当时在Usenet新闻组comp.os.minix所登载的帖子,这份著名的帖子标志着Linux计划的正式开始。在计划的早期有一些Minix黑客提供了协助,而今天全球无数程序员正在为该计划无偿提供帮助。 Linux内核源代码非常庞大,随着版本的发展不断增加。它使用

1

目录树结构,并且使用Makefile组织配置编译。顶层目录的Makefile 是整个内核配置编译的核心文件,负责组织目录树中子目录的编译管理,还可以设置体系结构和版本号等。 嵌入式系统中内核移植需根据具体硬件配置对内核源码进行相应地修改、配置。 2. 如图所示,LED2~LED5分别与GPX2_7、GPX1_0、GPX2_4、 GPF3_5相连,通过GPX2_7、GPX1_0、GPX2_4、GPX3_0引脚的高低电平来控制三极管的导通性,从而控制LED的亮灭。 当这几个引脚输出高电平时发光二极管点亮;反之,发光二极管熄灭。 四、实验步骤及过程: 1.建立工作目录,将 Linux-3.14 内核源码解压到工作目录中。$ tar xvf linux-3.14.tar.xz $ cd linux-3.14 2.修改顶层 makefile 文件,指定体系结构及交叉编译工具。$ vim Makefile 修改: ARCH?= $(SUBARCH) CROSS_COMPILE?= $(CONFIG_CROSS_COMPILE:"%"=%)

嵌入式软件工程师和嵌入式硬件工程师有什么区别

嵌入式软件工程师和嵌入式硬件工程师有什么区别 什么是嵌入式硬件工程师随着嵌入式技术的普及,硬件工程师的性质也有所改变。嵌入式硬件工程师与我们平常所说的硬件工程师不同。嵌入式硬件工程不但要求具备硬件工程师的基本技能,还必须完成部分软件工程师的工作,例如:底层驱动的开发嵌入式操作系统的裁剪,移植; GUI、文件系统等软件的移植; 基于嵌入式操作系统的底层驱动程序的设计等。 什么是嵌入式软件工程师嵌入式软件工程师与我们平常说的软件工程师不同。 我们平常说的软件工程师大部分指的是windows 和linux 操作系统下应用软件的开发人员,硬件平台是基于PC 机的。而嵌入式软件工程师则是指在wince.linux 等嵌入式操作系统下进行用户应用软件开发的人员,硬件平台则是基于嵌入式产品的(例如:手机、PDA 等)。软件开发工具也有所区别,嵌入式软件开发一般使用的是嵌入式系统专用的开发工具,例如wince 下的evc,和linux 下的qt 等。 嵌入式软件工程师和嵌入式硬件工程师有什么区别软、硬件工程师工作性质的区别 嵌入式硬件工程师的工作是为软件工程师搭建好硬件平台和必要的开发环境。嵌入式软件工程师则是根据用户的需要完善产品的软件功能。硬件工程师就像是设计师和建筑师,负责整个建筑的设计和建设。软件工程师则是负责房间的装修,锦上添花。 总的来说,硬件工程师的工作性质尤为重要,因为硬件工程师在设计产品时不但要完成产品的基本功能,还必须考虑多方面因素:功耗、干扰、后期维修、生产安装等。一旦某一个因素考虑不周全,会造成整个产品的设计失败。 除此之外,产品在设计中可以没有软件工程师,绝不能没有硬件工程师。因为在某些对实时性要求严格的嵌入式产品(例如:工业产品)或者某些低性能的嵌入式产品(例如:CPU 使用单片机的产品)中,往往是不能够使用操作系统的。这时,整个产品的设计工作则全部由硬件工程师来完成了。

嵌入式系统课程设计--基于ARM的LCD显示屏驱动程序设计

前言 (1) 1.系统设计 (1) 1.1涉及的软硬件简介 (1) 1.1.1 Proteus 7.8简介 (1) 1.1.2 RVDS简介 (2) 1.1.3 芯片LPC2106简介 (2) 1.2 LCD显示原理和初始化流程图 (3) 1.2.1 LCD显示简介 (3) 1.2.2 LCD相关参数 (4) 1.3 Proteus仿真电路 (7) 1.3.1 Proteus仿真元件清单 (7) 1.3.2 Proteus仿真电路图截图 (7) 1.4 程序代码分模块介绍 (8) 2.实验(测试)结果 (18) 3.总结 (19) 参考文献......................................................................................................... 错误!未定义书签。 前言 近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。嵌入式系统无疑成为当前最热门最有发展前途的IT应用领域之一。 液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。通过显示器同步显示元器件的状态可以更深刻地理解控制的原理。 通过Proteus模拟ARM7芯片设计,可以增强我们的自学能力和思考能力,掌握科学研究的方法,提高信息检索的能力以及获取与时俱进知识的能力。同时,使我们深刻学习了ARM的相关知识,增强对实际电路的感性认识,提高了分析问题,处理问题的能力。 运用Keil编译C语言,连接生成Hex文件和Axf文件。使用PROTEUS 7.8SP2仿真,选用ARM7 LPC2106 芯片和LCD1602,导入Hex或文件,然后进行软件仿真调试。 1.系统设计 1.1涉及的软硬件简介 设计中软件主要用到了模型仿真软件Proteus和编译套件RVDS(RealView Development Suite),硬件主要采用了NXP公司的LPC2106微控制器。 1.1.1 Proteus 7.8简介 Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件

相关文档
相关文档 最新文档