欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    单片机和嵌入式系统linux的区别转自21IC电子网.docx

    • 资源ID:13439494       资源大小:24.79KB        全文页数:13页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机和嵌入式系统linux的区别转自21IC电子网.docx

    1、单片机和嵌入式系统linux的区别转自21IC电子网单片机和嵌入式系统linux的区别随着嵌入式行业硬件平台的性能增强,项目需求和功能日益复杂,ARM公司推出的 CORTEX-M3,更是让以往做单片机的工程师在芯片和技术选型面临两难选择,本专题将从芯片价格、整个系统的硬件软件设计及维护的成本等各个方面给您 提供一个参考, 并从技术角度分析单片机和带操作系统的系统的软件开发的异同点。1.单片机与ARM等新处理器的价格比较2.带操作系统与不带操作系统的软件开发的区别2.1.驱动开发的区别2.2.应用程序开发的区别1. 单片机与ARM等新处理器的价格比较表1型号架构 资源 价格(元)AT89S518

    2、051 最高频率33MHz4KB Flash128B内部RAM32个可编程IO引脚 两个16bit的计数器 一个UART口 4SST89E564RD8051 最高频率40MHz 64KB Flash1KB内部RAM32个可编程IO引脚 三个16bit的计数器 一个UART口 一个SPI接口 35STM32F103 CORTEX-M3 最高频率72MHz64KB或128BK Flash20KB SRAM80个可编程IO引脚 2个12bit的ADC7通道DMA控制器 标准调试口(SWD和JTAG)7个定时器 USB接口 2个I2C接口 3个UART2个SPI接口 21HI3510ARM9+DSP双

    3、核 最高工作频率240MHz视频处理单元,支持多种协议的实时编解码 图形处理单元 视音频接口 以太网接口 DDR控制器 USB、UART、IrDA、 I2C、SPI、GPIO等多种外设接口 80S3C2440ARM9最高工作频率400MHzSDRAM控制器 LCD控制器 4通道DMA控制器 3个UART2个SPI1个I2C接口 IIS音频接口 SD HOST接口 2个USB接口 8个10bit ADC摄像头接口 Camera接口 40从表 1里面各种芯片的资源,大概就可以猜知它们的应用场合。51单片机通常被用来做一些比较简单的控制,比如采集信号、驱动一些开关。AT89S51的 Flash只有4

    4、K,一个稍微复杂的程序就不止4K了。SST89E564RD是一种扩展的51单片机,它的Flash达到64KB,可以外接最多 64KB的SRAM。在SST89E564RD上的程序可以写得更复杂一些,但是它对外的接口也比较少。CORTEX-M3系列的处理器,对外接口极其丰富,这使得它的应用面更广,但是限于它的Flash、内存还是比较小,一般不在上面运行操作系统,它算是一个性能非常突出的单片机。HI3510 是海思半导体公司的一款用于监控设备的芯片,一般上面运行Linux系统,通过摄像头采集数据、编码,然后通过网络传输。另一端接收到数据之后,再解码。 在上面运行的程序非常复杂,有漂亮的图片界面、触摸

    5、屏控制、数据库等等。对声音图像的编解码更是用到DSP核。S3C2440 是一款通用的芯片,它与“高级单片机”STM32F103相比,多了存储控制器和NAND控制器这使得可以外接更大的Flash、更大的内存;多了内 存管理单元(MMU)这使得它可以进行地址映身(虚拟地址、物理地址之间的映射)。可以在S3C2440上运行Linux系统,运行更大更复杂的程 序。在具体工作中,怎么选择这些芯片呢?一句话:成本!进行任何产品的开发都要考虑性价比,一切应该从“成本”出发。成本不仅包括芯片的价格,也包括整个系统的硬件、软件设计及维护的难易。芯片价格可以在电子市场问到,也可以在.上找到有卖这种芯片的柜台,然后

    6、咨询。基于不同的应用,处理器和其他外设的选择是要统一考虑的,如果要实现一个简单的U盘读写功能,那么可以选择带USB控制器的CORTEX-M3芯片,也可以选择8051外接一个USB控制器比如SL811,就看哪种方案成本更低。进行芯片选型时,必须基于整个系统来考虑。员工的偏好和知识结构也是一个很重要的因素,如果他对ATMEL的芯片比较熟,他就不会倾向于三星;如果他不会Linux等操作系统,那么选型时就不会有操作系统的概念。选择自己不熟悉的芯片和技术,最后的成本也可能更高。2. 带操作系统与不带操作系统的软件开发的区别用通 俗的话来说,一个处理芯片不运行操作系统,我们就把它称为单片机,而单片机编程就

    7、是写裸板程序,这个程序直接在板子上运行;相对的,另一种程序就是基于操 作系统的程序,说得简单点就是,这种程序可以通过统一的接口调用“别人写好的代码”,在“别人的基础上”更快更方便地实现自己的功能。2.1. 驱动开发的区别驱动开发的区别我总结有两点:能否借用、是否通用。2.1.1 能否借用基于 操作系统的软件资源非常丰富,你要写一个Linux设备驱动时,首先在网上找找,如果有直接拿来用;其次是找到类似的,在它的基础上进行修改;如果实在没 有,就要研究设备手册,从零写起。而不带操作系统的驱动开发,一开始就要深入了解设备手册,从零开始为它构造运行环境,实现各种函数以供应用程序使用。 举个例子,要驱动

    8、一块LCD,在单片机上的做法是: 首先要了解LCD的规格,弄清楚怎么设置各个寄存器,比如设置LCD的时钟、分辨率、象素 划出一块内存给LCD使用 编写一个函数,实现在指定坐标描点。比如根据x、y坐标在这块内存里找到这个象素对应的小区域,填入数据。基于操作系统时,我们首先是找到类似的驱动,弄清楚驱动结构,找到要修改的地方进行修改。下面是单片机操作LCD的代码: 初始化:void Tft_Lcd_Init(int type)/* * 设置LCD控制器的控制寄存器LCDCON15* 1. LCDCON1:* 设置VCLK的频率:VCLK(Hz) = HCLK/(CLKVAL+1)x2* 选择LCD类

    9、型: TFT LCD * 设置显示模式: 16BPP* 先禁止LCD信号输出* 2. LCDCON2/3/4:* 设置控制信号的时间参数* 设置分辨率,即行数及列数* 现在,可以根据公式计算出显示器的频率:* 当HCLK=100MHz时,* Rate = 1/(VSPW+1)+(VBPD+1)+(LIINEVAL+1)+(VFPD+1)x*(HSPW+1)+(HBPD+1)+(HFPD+1)+(HOZVAL+1)x*2x(CLKVAL+1)/(HCLK)*= 60Hz* 3. LCDCON5:*设置显示模式为16BPP时的数据格式: 5:6:5*设置HSYNC、VSYNC脉冲的极性(这需要参考

    10、具体LCD的接口信号): 反转*半字(2字节)交换使能*/LCDCON1 = (CLKVAL_TFT_3202408) | (LCDTYPE_TFT5) | (BPPMODE_16BPP1) | (ENVID_DISABLE0);LCDCON2 = (VBPD_32024024) | (LINEVAL_TFT_32024014) | (VFPD_3202406) | (VSPW_320240);LCDCON3 = (HBPD_32024019) | (HOZVAL_TFT_3202408) | (HFPD_320240);LCDCON4 = HSPW_320240;/LCDCON5 = (FO

    11、RMAT8BPP_56511) | (HSYNC_INV9) | (VSYNC_INV8) | /(HWSWP1);LCDCON5 = (FORMAT8BPP_56511) | (HSYNC_INV9) | (VSYNC_INV8) | (VDEN_INV 6) | (HWSWP22)1);LCDSADDR2 = LOWER21BITS(LCDBUFFER+ (LINEVAL_TFT_320240+1)*(HOZVAL_TFT_320240+1)*2)1);LCDSADDR3 = (0 19) & 0x1f;green = (color 10) & 0x3f;blue = (color 3)

    12、& 0x1f;color = (red 11) | (green 5) | blue; / 格式5:6:5*addr = (UINT16) color;break;case 8:UINT8 *addr = (UINT8 *)fb_base_addr + (y * xsize + x);*addr = (UINT8) color;break;default:break;下面是在Linux的LCD驱动里修改的地方(archarmmach-s3c2440mach-smdk2440.c):/* 320x240 */static struct s3c2410fb_mach_info smdk2440_l

    13、cd_cfg _initdata = .regs = .lcdcon1 = S3C2410_LCDCON1_TFT16BPP | S3C2410_LCDCON1_TFT | S3C2410_LCDCON1_CLKVAL(0x04),.lcdcon2 = S3C2410_LCDCON2_VBPD(1) | S3C2410_LCDCON2_LINEVAL(239) | S3C2410_LCDCON2_VFPD(5) | S3C2410_LCDCON2_VSPW(1),.lcdcon3 = S3C2410_LCDCON3_HBPD(36) | S3C2410_LCDCON3_HOZVAL(319)

    14、| S3C2410_LCDCON3_HFPD(19),.lcdcon4 = S3C2410_LCDCON4_MVAL(13) | S3C2410_LCDCON4_HSPW(5),.lcdcon5 = S3C2410_LCDCON5_FRM565 |S3C2410_LCDCON5_INVVLINE |S3C2410_LCDCON5_INVV |S3C2410_LCDCON5_INVVDEN |S3C2410_LCDCON5_PWREN |S3C2410_LCDCON5_HWSWP,.gpccon = 0xaaaa56aa,.gpccon_mask = 0xffffffff,.gpcup = 0x

    15、ffffffff,.gpcup_mask = 0xffffffff,.gpdcon = 0xaaaaaaaa,.gpdcon_mask = 0xffffffff,.gpdup = 0xffffffff,.gpdup_mask = 0xffffffff,.fixed_syncs = 1,.type = S3C2410_LCDCON1_TFT, .width = 320,.height = 240,.xres = .min = 320,.max = 320,.defval = 320,.yres = .max = 240,.min = 240,.defval = 240,.bpp = .min =

    16、 16,.max = 16,.defval = 16,;这并不表示代码Linux的驱动程序就比单片机的驱动程序好写,怎么在几万个文件中找到要修改的代码,这也是需要艰苦的学习的。基于操作系统的驱动开发,既要懂得芯片的具体操作,也要理解操作系统的软件结构。2.1.2 是否通用有些 单片机厂家也给客户提供了大量的驱动程序,比如USB HOST驱动程序,这可以让客户很容易就可以在它的上面编写程序读写U盘。但是客户写的这些程序,只能在这种芯片、这个驱动程序上使用;更换另一种芯片 后,即使芯片公司也提供了驱动程序,但是接口绝对不一样,客户又得重新编写应用程序。基于操作系统的驱动程序要遵循统一的接口,比如对

    17、于不同的芯片的USB HOST驱动,它们都要向上提供一个相同的数据结构,在里面实现了各自的USB操作。下面是S3C2410/S3C2440的USB驱动向上层提供的数据结构:static const struct hc_driver ohci_s3c2410_hc_driver = .deion = hcd_name,.product_desc = S3C24XX OHCI,.hcd_priv_size = sizeof(struct ohci_hcd),/* generic hardware linkage*/.irq = ohci_irq,.flags = HCD_USB11 | HCD_MEMORY,/* basic lifecycle operations*/.start = ohci_s3c2410_start,.stop = ohci_stop,.shutdown = ohci_shutdown,/* managing i/o requests and associated device resources*/.urb_enqueue = ohci_urb_enqueue,.urb_dequeue = ohci_urb_dequeue,.endpoint_disable = ohci_endpoint_disable,


    注意事项

    本文(单片机和嵌入式系统linux的区别转自21IC电子网.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开