我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 798|回复: 6

[零组件/半导体] nios和μClinux嵌入式系统设计例子uart串行口和以太网接口转

[复制链接]
  • TA的每日心情

    2024-10-6 20:55
  • 签到天数: 1 天

    [LV.1]初来乍到

    479

    主题

    247

    回帖

    1392

    积分

    二级逆天

    积分
    1392

    终身成就奖特殊贡献奖

    发表于 2021-1-7 09:15:36 | 显示全部楼层 |阅读模式

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×
    嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用程序四部分组成,其发展主要体现在芯片技术的进步上,以及在芯片技术限制下的算法与软件的进步上。随着芯片制造技术的发展,嵌入式系统的结构也随之发生了重大变革,从基于微处理器的嵌入式系统到基于微控制器的嵌入式系统,继而将可编程逻辑pld(programmablelogicdevice)技术引入到嵌入式系统设计中,进而又发展到soc(systemonchip),终将pld与嵌入式处理器结合而成为sopc(systemonprogrammablechip),使得sopc成为嵌入式系统设计的一个发展趋势。
    本文采用sopc内嵌32位的软核处理器nios,实现了一个uart串行口和以太网接口的转换器(以下简称转换器),并基于microtronix公司针对nios处理器移植的μclinux开发了应用程序.其系统结构如图l所示。


    1基于sopc的嵌入式硬件平台构建
    不同于基于处理器或控制器及soc的嵌入式系统,基于sopc的嵌入式系统具有可配置的特点,不会包括任何专用外设,而是可根据需要灵活地在一片fpga中构造外设接口
    基于sopc的嵌入式系统主要由1片芯片sopc和片外器件,以及一些相关的接口设备组成。本文所要实现的转换器采用altera公司的cyclone芯片及外围电路组成,其中外围电路包括2片512kb的sram、l片8mb的flash、uart电子转换器和1片以太网控制器lan91c111。系统电路框图如图2所示。

    sopc芯片内嵌软核处理器nios。在sopc芯片中,除了cpu外,可配片上rom、内部定时器、uart串行口、sram、flash接口等系统部件。这些部件均以可编程逻辑部件的形式实现,芯片内部部件结构图如图3所示。cpu和所有部件通过avalon总线连接在一起。

    sopc芯片内系统模块和avalon总线模块均由sopcbuilder工具自动生成,利用qualtusii集成开发环境可实现芯片内的逻辑设计及其引脚定义。经编译生成后缀为.sof的硬件映像文件,通过byteblasterii线缆到目标板的cyclone芯片中,或将.sof文件转换成.flash文件,到目标板的flash中。这样就完成了转换器的硬件设计。
    2基于μclinux的sopc应用程序开发
    应用程序的开发可在硬件平台上直接进行,但需了解所有硬件部件的细节,并编写相应的驱动子程序,其软件设计难度及工作量大,且可移植性差。基于嵌入式操作系统的应用程序,其所有的硬件细节均对用户屏蔽。对硬件进行直接控制的底层驱动程序均封装在操作系统内,通过设备驱动程序接口来完成,用户只需在高层通过操作系统所提供的系统调用进行编程。μclinux是针对控制领域的嵌入式linux操作系统,适合如nios处理器等不具备内存管理单元(mmu)的微处理器/微控制器。基于操作系统进行开发,需将操作系统加载到硬件平台中,μclinux可以以部件的形式集成到sopc系统中。
    2.1加载μclinux系统的步骤
    将μclinux加载到sopc目标板上时需提供一个交叉编译环境,硬件要求具有一个串口的pc工作站、基于nios处理器的sopc目标板和byteblastermv线缆等。软件需求windowsntv4.0、windows2000或windowsxp、alteranios开发包ndk3.0中所提供的niosgnupro工具、aheranios开发包所提供的cygwin安装,以及quartusii可编程逻辑开发工具v2.2等。
    2.1.1创建和装载内核映像
    创建和装载μclinux映像文件在linuxdeveloperbash环境下进行,首先需按下列步骤配置和构建内核。
    [linuxdeveloper]…μclinux/:cdlinux
    [linuxdeveloper]…linux/:makexconfig
    [linuxdeveloper]…linux/:makeclean
    [linuxdeveloper]…1inux/:makedep
    [linuxdeveloper]…linux/:make
    [linuxdeveloper]…μclinux/:makelinux.flash
    生成的linux.flash文件即为μclinux内核映像。当sopc目标板加电,片内rom中的germs监控程序运行后,在[linuxdeveloper]…μclinux/:下键入nios-runlinux.flash,即linux.flash文件到目标板上,完成内核映像的加载。
    2.1.2创建和装载根文件系统
    除了装载内核外,还需装载根文件系统。μclinux采用romfs文件系统,这种文件系统相对于一般的ext2文件系统要求更少空间。
    在主机上linux的target目录表示在μclinux下的根(root)目录。当前的脚本和工具可将target目录转换成映像文件(romdisk.flash),按如下步骤创建:
    [linuxdeveloper]…μclinux/:makeclean_target
    [linuxdeveloper]…μclinux/:makeromfs
    然后键入以下命令:
    [linuxdeveloper]…μclinux/:nios-runromdisk.flash
    即将romdisk.flash文件到目标板上,完成μclinux的根文件系统的加载。
    2.1.3加载应用程序
    用户应用程序可通过target目录加载到根文件系统中,可根据需要重建romdisk映像。应用程序在userland目录下,编译生成运行文件后拷贝到target目录树中,并根据target目录的内容创建romdisk.flash文件。新建一个应用程序,首先打开一个linuxdeveloperbash窗,在userland目录中创建一个目录app,应用程序源文件存放在此目录中,然后在userland/app/中建立一个makefile文件。
    makefile内容如下所示,其中appfile为应用程序名。
    stackslze=8192
    include.。/。。/rules.mak
    all:appfile.relocbflt
    sources=appfile.c
    install:
    $(romfsinst)appfile.reloebfh
    $(romfsdir)/bin/appfile$(execsuffix)
    clean:
    rm-f*.[iods]coreappfileappfile.*elfappfile.*bflt
    运行make对应用程序进行编译并修改userland/.eonfig和/userland/makefile文件。在userland/.config文件中,增加一行config_my_app=y,在userland/makefile文件中,增加dir_$(config_my_app)+=app,进入userland子目录,运行make,即可将应用程序安装到userland/bin中,并根据userland/.config文件中相应变量的指示将应用程序二进制拷贝到target目录中。
    ,键入以下命令重新构建romdisk映像文件(romdisk.flash),并到目标板上。
    [linuxdeveloper]…uclinux/:makeclean_target
    [linuxdeveloper]…uclinux/:makeromfs
    [linuxdeveloper]…uclinux/:nios-runromdisk.flash
    2.1.4运行μclinux
    完成μclinux内核及文件系统的装载后,即可运行μclinux。键入g800000(800000为启动代码地址,在sopcbuilder中设置),μclinux自动完成初始化过程,用户输入登录用户名nios,密码μclinux,出现μclinux的提示符#,表示已进入μclinux运行环境。
    2.2转换器应用程序的实现
    转换器应用系统主要完成网络接口和串行接口间的数据传输,所传输的数据流如图4所示。μclinux操作系统中提供了网络驱动程序和串口驱动程序,并提供了多线程的支持。

    转换器应用系统中的串口收发数据和网络口收发数据是异步进行的,可分别作为一个任务来对待,任务间是并发的,因此可采用多线程程序设计技术来实现多任务间的并发执行,系统主程序流程图如图5所示。

    在此应用系统中有4个任务,分别创建4个线程:网络接收线程、网络发送线程、串口接收线程和串口发送线程。这4个线程可并发执行.因网络速度与串口速度存在着差异,需设置相应的缓冲区来对收发数据进行缓冲。在此应用系统中设置两个环形缓冲区,如图4所示,其中nctrv_uartsd_buf用于接收网络数据,供存储从网络口接收的数据,然后串口从此缓冲区中取出数据发送。另一缓冲区uartrv_netsd_bur用于接收串口数据,然后网络口取出此缓冲区中数据发送出去。
    线程间需实现相互通信和同步,共用缓冲区既要互斥执行又要同步执行,其操作遵循生产者和消费者模型。线程间的互斥操作采用互斥锁(mu-tex)来实现。线程间的同步通过设置两个指针来实现,一个是读指针,另一个是写指针,写指针指向队头,初
    始化为0,读指针指向队尾,初始化为bufsize-1。当写数据时,比较读写指针是否相等,相同则写线程阻塞;不相等,则写入数据,然后将写指针加1。当读数据时,读指针加1,然后比较读写指针是否相等,相等则读线程阻塞;不相等,则读出数据。
    网络发送线程(流程图如图6所示)和串口接收线程(流程图如图7所示)间共用环形缓冲区uartrv_netsd_buf。串口发送线程和网络接收线程共用环形缓冲区netrv_uartsd_buf。两线程间的关系和处理类似网络发送线程和串口接收线程。

    3系统测试
    完成转换器的软硬件设计后,按如图8所示,连接系统进行转换器数据的传输测试。在pc机a上运行串口收发程序,而在pc机b上运行以太网收发程序,经测试后数据传输无误。

    参考文献:
    [1]。lan91c111datasheethttps://www.dzsc.com/datasheet/lan91c111_1054180.html.
    [2]。romdatasheethttps://www.dzsc.com/datasheet/rom_1188413.html.
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    6218

    回帖

    8731

    积分

    二级逆天

    积分
    8731

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    QQ
    发表于 2021-1-7 09:22:04 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    4703

    回帖

    5

    积分

    二级逆天

    积分
    5

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    发表于 2021-1-7 11:14:22 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-5-28 08:59
  • 签到天数: 1 天

    [LV.1]初来乍到

    21

    主题

    885

    回帖

    1338

    积分

    二级逆天

    积分
    1338

    终身成就奖优秀斑竹奖

    QQ
    发表于 2021-1-7 11:31:32 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情

    昨天 09:40
  • 签到天数: 166 天

    [LV.7]常住居民III

    7

    主题

    5275

    回帖

    4519

    积分

    二级逆天

    积分
    4519

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    发表于 2021-1-7 13:27:24 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    39

    主题

    1248

    回帖

    0

    积分

    二级逆天

    积分
    0

    终身成就奖优秀斑竹奖

    发表于 2021-1-7 16:57:04 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    19

    主题

    1829

    回帖

    4431

    积分

    PADS-2021国庆特训班

    积分
    4431

    终身成就奖特殊贡献奖优秀斑竹奖

    发表于 2021-1-7 19:36:59 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    每日签到,有金币领取。


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    ( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

    平平安安
    TOP
    快速回复 返回顶部 返回列表