PCB抄板专家世纪芯官方网站——PCB抄板网!   
  首页  公司介绍  资讯中心  案例展示  服务推荐  常见问题  联系我们  
24小时客服热线: +86-0755-83035861
PCB抄板资料站
世纪芯寻找疑难项目隆重启幕
世纪芯芯片解密取得重大突破
世纪芯PCB抄板服务流程
世纪芯保证PCB抄板100%准确
资讯中心
嵌入式系统设计要点

嵌入式系统设计要点

http://www.pcbcb.com    2009年09月02日10:07  PCB抄板网    我要咨询

对始址。再从标头内容计算出装入模块大小,即要占用的ROM容量。将系统ROM始址加上代码段在装入模块中的
  相对地址,便得到程序开始执行的地址。然后,对定位指针进行自小到大排序。根据各段的始末地址逐段析出段址,并从装入模块中读入该段代码或数据。接着按定位指针顺序考察待定位的段址,若它落在该段范围内,便进行定位操作,即把此段址修改成实际的ROM或RAM地址。直到将属于这个段的定位指针全部处理好后,便把这段内容写到输出文件。对所有段都进行定位后,便获得ROM图。 图2 80x86系统上嵌入式程序的定位过程
  3 启动程序
  ROM中程序执行前,先要在RAM中建立堆栈和数据区。串数据等常数与程序一起固化在ROM中,程序可以访问它们,但RAM的存取速度比E-PROM高,因此也被复制进RAM,以提高读出速度。还需要建立C程序运行的环境,如对段寄存器和堆栈指针初始化、对静态变量和RAM区清零、建立堆(heap)等。程序运行前还应设置必要的中断矢量,并让各未用中断指向一个只含RET指令的哑函数,以防止错误中断引起系统的混乱。此外,还要对系统硬件进行初始化,并根据具体的系统,加入出错时中止程序或重启动的程序段等。这些工作都由用汇编语言编写的启动程序完成。启动程序是嵌入式程序的开头部分,应与应用程序一起固化在EPROM 中,并首先在系统上运行(图2)。它应包含进各模块中可能出现的所有段类,并合理安排它们的次序。当它作为第一个模块和应用程序等一起连接时,LINK将按照该次序归并类名相同的段。
  写好启动程序是设计好嵌入式程序的关键。各类C编译均提供自己的启动程序模块(C0。ASM),可以此为样板,经简化和修改形成适用本系统的启动程序,也可以先搭一个启动程序骨架,再逐步完善。
  4 嵌入式程序的运行
  嵌入式系统大多不能从键盘接受命令,而要在系统通电或复位时,自动执行ROM中的程序。各系统的复位地址不尽相同,以工作在实模式的80x86嵌入式系统为例,CPU复位后将执行F000:FFF0H处的代码。这是系统ROM的高址端,仅有16字节空间,设计者可用DEBUG命令在ROM图的这个位置上,放一条无条件远跳转指令JMPFARPTRstart,转到ROM开头,从那里执行启动程序(见图2)。启动程序完成上述的初始化后调main函数,执行应用程序。 80286以上的CPU复位时,CS:IP初值仍是F000:FFF0H。但
  A20以上地址线在CS寄存器被第一次装进新的内容前,一直保持高电平,即开始地址指向最高地址端。如只要求系统工作在实模式,可由译码电路将开始的高地址反射到低端的1MB空间,复位矢量仍是F000:FFF0H。当上述JMP指令一 执行,CS被改写,A20以上地址线将变低而进入实模式。要是希望启动后进入保护模式,就不需要进行地址反射,但是相应的复位地址上只能放一条近跳转指令,保证不改变CS值。然后进行必要的初始化,尽快进入保护模式。
  5 嵌入式程序的编译和连接
  综上所述,设计嵌入式系统时要在PC机上编写三个程序:应用程序MYPROG.C;定位程序LO-CATOR.C;启动程序STARTUP。ASM。然后按以下步骤进行编译和连接,生成可编程的ROM图:
  将应用程序编译成MYPROG。OBJ。
  将定位程序编译和连接成可执行程序LO-CATOR。EXE。
  将启动程序编译成STARTUP。OBJ。
  对STARTUP。OBJ、MYPROG。OBJ及必要的库函数进行连接,生成EMBED。EXE和简化的MAP文件EMBED。MAP。STARTUP 必须是LINK行上的第一个模块,保证它先执行。
  执行LOCATOR。EXE,以EMBED。EXE、EMBED。MAP、第一个RAM段的段类名、RAM和ROM始址为输入参数,实现定位,输出ROM图EMBED。BIN。
  ?用DEBUG命令在EMBED。BIN的F000:FFF0H位置上加进指令JMPFARPTRstart,形成最终的ROM图。
  6 其它几个问题
  6。1 系统内存考虑
  为确保正确复位,设计硬件时要让ROM地址空间覆盖复位矢量。例如8086系统的最高地址为F000:FFFFH,若采用128KB的ROM,其地址范围应取E000:0000-F000:FFFFH。 RAM地址则应从0开始,由于开头1KB字节RAM要保留给中断矢量表,通常如图2那样将RAM数据区设在地址0040:0000H处。
  常数先固化在ROM中,然后被复制进RAM,因此占用的存储器空间是DOS下的两倍。可在程序设计中设法限制要复制进RAM的常数数量。例如,系统若支持CRT显示器,可能需要在屏幕上显示各种消息和菜单提示。这时,可把所有显示函数和有关文本串

关于我们 ┊ about shijixin ┊ 服务项目 ┊ 成功案例 ┊ 常见问题 ┊ 合作伙伴 ┊ 联系我们 ┊ 加入我们 
Copyright © 1998 - 2009 www.pcbcb.com. All Rights Reserved
PCB抄板资料站--国内最专业的PCB抄板信息综合门户!
联系地址:深圳市福田区国际科技大厦2603单元 联系电话:0755-83035861/62/63 Design By :www.pcbcb.com