哈尔滨工业大学(威海)_第1页
哈尔滨工业大学(威海)_第2页
哈尔滨工业大学(威海)_第3页
哈尔滨工业大学(威海)_第4页
哈尔滨工业大学(威海)_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

HypoSoC-IoT,指导老师:何燕平、何辉,队员:胡森、胡起、戴天宇、柴可,01,HypoMIPS,02,HypoSoC,03,HypoLinux,04,IoT Platform,CONTENTS,01,HypoMIPS,HypoMIPS 概览,HypoMIPS 设计,HypoMIPS采用MIPS经典五级流水架构,为了提高主频,减少流水线的损失等,做了一定优化。,对于分支指令,将分支判断设置在ID段,减少分支指令带来的延迟 将MEM段的任务尽量向前后两段分摊,为cache争取时序,预赛主频跑在120MHz,为入决赛队伍中最高,性能分60.25 决赛加入TLB后仍可以跑在100MHz,IPC比为26.08,HypoMIPS 设计,为了运行linux,在预赛的基础上,我们实现了:,全部共计100条指令:如LL、SC、TGE等等 需要的20个CP0寄存器:如EntryLo0、EntryLo1 完整的32项TLB 7种cache指令,HypoMIPS 进一步优化,针对乘法模块时序过差以及除法模块处理周期过长的问题,单独抽出开发MDU模块,整个模块大致分成三大部分: HILO处理部分 乘法处理部分 除法处理部分,HypoMIPS 进一步优化,HILO处理部分会在一周期内完成,不进行暂停请求,完成指令为MTHI、MTLO 乘法模块部分将拆分成23周期完成,主要指令有MULT/MULTU、MUL/MULU、MADD/MADDU、MSUB/MSUBU 除法模块采用动态试商法,主要完成指令有DIV/DIVU,MDU模块的设计,动态试商法可以将大部分除法任务降低到16周期以下; 针对特定除法,甚至可以在1到2周期完成,四路组相连cache尝试,I_Cache设计示意图,四路组相连,每组大小4KB,Cache大小为16KB; 每组中,块大小为64B; LRU替换策略,LRU位为6位; 每块还包含4bit的valid位以及20位的tag位,Dcahce还有4bit的dirty位。,四路组相连cache尝试,实现LRU替换策略 Cache读写实现了AXI总线全双工 完成了所有的Cache指令,并启动linux系统,使用四路组相连Cache和同等大小的直接映射Cache相比: 初赛性能分提高约4分 决赛IPC分数提高约2分,02,HypoSoC,HypoSoC,Features 稳定运行定制的 Linux 2.6.32 内核 片上系统加入了自行编写模块,并小部分重构; 片上系统可接入、控制物联网设备(如传感器、舵机); 所有应用程序均运行于用户态,通过驱动与外设交流; 本次大赛上层专注于嵌入式物联网,实现了一个简易的自主可控物联网平台。,HypoSoC,1.修改SoC时钟频率为 66MHz,其中 UART Baudrate 需要配置为 115200,AXI3 Crossbar 绕 MIPS Core 一圈,完美地体现了以 AMBA 协议为核心的 SoC 设计,AXI3 to AXI4Lite,XLNX IP CORE 全部基于 AXI4-Lite 总线协议,所以需要一个转换,AXI3 Crossbar,AXI3 to AXI4Lite,01,1. 引用了 FPGA 芯片扩展输入输出 EXT_IO,我们称为 Hypothetic GPIO HQ2 Header (abbr. GHQ2),Bank0 对应 FPGA_EXT_IO 0-15,Bank1 对应 FPGA_EXT_IO_16-31 2. 于 GHQ2 Bank0 配置 16 个三态双向串行数据线,其中 FPGA_EXT_IO14-15 被以软件实现的 Simple I2C Emulator 分时占用,以与基于 I2C 协议的设备进行交流; 3. 于 GHQ2 Bank1 配置 2 个 UART Lite 的数据线以及 4 个可控 PWM_CNT 模块的单向输出数据线。,Xilinx GPIO - HQ2 Header,HypoSoC,02,1.lora 透传 hello world 字符串等,Xilinx UART Lite 无线传输,HypoSoC,02,2. HSUP - Hypothetic Simple UART Protocal,Xilinx UART Lite,HypoSoC,02,2. HSUP - Hypothetic Simple UART Protocal,Xilinx UART Lite,HypoSoC,03,接入了 UART Lite 和 NAND FLASH 的中断(CauseIP5),Xilinx Interrupt Controller,HypoSoC,01,AXI2BRAM Interface 用于与 AXI3 总线进行交流 LCD Module 状态机实现 8080 并口控制 NT35510 TFT Module 实现 I2C 模块,用于读取触点等,TFT-LCD,HypoSoC,01,AXI2BRAM Interface 用于与 AXI3 总线进行交流 LCD Module 状态机实现 8080 并口控制 NT35510 TFT Module 实现 I2C 模块,用于读取触点等,TFT-LCD,HypoSoC,02,PWM_CNT 计数型脉冲调制模块 共设置 6 个,其中两个集成式总控,四个外接式独控; PWM 0-3 单独分配4个Confreg模块内地址,可以独立控制外设例如舵机 PWM 4-5 单独分配2个Confreg模块内地址,可以独立控制板载外设例如 LED16 以及 LCD 背光 新增两个控制寄存器 用于选择 LED16/LCD 的亮度信号源,Loongson - HITwh Confreg,HypoSoC,02,PWM_CNT 计数型脉冲调制模块 共设置 6 个,其中两个集成式总控,四个外接式独控; PWM 0-3 单独分配4个Confreg模块内地址,可以独立控制外设例如舵机 PWM 4-5 单独分配2个Confreg模块内地址,可以独立控制板载外设例如 LED16 以及 LCD 背光 新增两个控制寄存器 用于选择 LED16/LCD 的亮度信号源,Loongson - HITwh Confreg,HypoSoC,02,PWM_CNT 计数型脉冲调制模块 共设置 6 个,其中两个集成式总控,四个外接式独控; PWM 0-3 单独分配4个Confreg模块内地址,可以独立控制外设例如舵机 PWM 4-5 单独分配2个Confreg模块内地址,可以独立控制板载外设例如 LED16 以及 LCD 背光 新增两个控制寄存器 用于选择 LED16/LCD 的亮度信号源,Loongson - HITwh Confreg,03,HypoLinux IoT 1.0.3,HypoLinux,HypoLinux,HypoLinux,02,1. 定制化裁切的内核(不包含文件系统大约 2.1M) 2. 在中断号紧缺状态下,新增中断控制器(修改了irq.c) 3. 运行于用户态,团队所有编写的驱动均以模块形式存放 4. 更改时钟频率为 66MHz,Kernel,HypoLinux Initramfs,1.为了实现完整的 IoT 平台而移植了包括但不限于以下库以及应用程序,HypoLinux Initramfs,为了实现完整的 IoT 平台而移植了包括但不限于以下库以及应用程序,HypoLinux Initramfs,2. 定制化的 BusyBox:修改了 inittab 、 init.d/rcS 等实现 SSH、NGINX 等必要应用的开机启动;增加了用户登录、自动登录、用户切换等;移植了全新的 bash 以支持 alias 等特性,例如可以像操作 Ubuntu 系统一样进行 ll 等命令;,HypoLinux Initramfs,2. 定制化的 BusyBox:修改了 inittab 、 init.d/rcS 等实现 SSH、NGINX 等必要应用的开机启动;增加了用户登录、自动登录、用户切换等;移植了全新的 bash 以支持 alias 等特性;,HypoLinux Initramfs,3. 增加了实现的驱动 4. 整合 glibc,04,IoT Platform,IoT Platform,前端,IoT Platform,前端,IoT Platform,前端,IoT Platform,后端 用户态驱动 - Modules 分为 hyposoc-iot_gpio.ko 以及 hyposoc-iot_lcd.ko,IoT Platform,GPIO Bank0 基本外设接入区,数据直接通过 XLNX GPIO 进行处理,支持单总线模拟/数字信号串行设备,其中模拟信号用 PCF8591 芯片进行 AD 转换,并用软件模拟的 I2C 时序写入控制字、读取相应数据; Bank1 HypoSoC 模块IO区,数据通过编写的 PWM、方波发生器,以及一些非 GPIO 模块如 IIC、SPI IP 核,支持相应协议的设备;,IoT Platform,功能与接口:,用户程序:,IoT Platform,IoT Platform,LCD 技术困难,最终除了背光控制(调用 GPIO 驱动实现)以及 BMP 图片显示之外的所有功能均运行于核心态;,IoT Platform,LCD 基本光栅图形库: 实现了基本光栅图形的绘制、填充以及基本图形变换;,IoT Platform,LCD 触摸屏的实现:RickyTino 的扫雷。,显示屏、触摸屏、按键、拨码开关、数码管 拨码开关最右侧两个有效,右1拨上会在一局游戏结束后正常退出程序,否则游戏重新开始; 右2拨上表示按键操作模式,否则为触屏操作模式 按键用到了3个按键,IoT Platform,IoT Platform,IoT Platform,通用网关接口 - CGIs monitor.cgi 前端主动定期GET,后端调用 GPIO 用户程序进行相应操作、文件读写、字符串截取过后以标准 JSON 形式提交; sysInfo.cgi 前端主动单次GET,后端调用 BASH 命令进行相应操作、文件读写、字符串截取过后以标准 JSON 形式提交; iotctl.cgi 对边缘设备的控制采用主动POST,后端进行字符串截取后进行相应动作; 对边缘设备的数据获取采用主动定期GET,后端调用用户程序进行相应操作、文件读写、字符串截取过后以标准 JSON 形式提交;,05,总结,问题,1. 用户态驱动限制严格,于是给移植之前随意编写的运行于核心态的程序带来了巨大的困难; 2. 由于添加了 Xilinx IP 核,于是需要相应的驱动,但是由于 Embededsw 提供的驱动均涉及设备树,所以需要移植 u-boot 和全新内核,但是全新内核对当前 SoC_up 的适配非常复杂,所以需要重建 SoC,最终仍需要 Xilinx IP 核来实现,而造成了死循环; 3. 在 AXI4-Lite 接口的 Xilinx IP 核接入 AXI Crossbar 时,由于默认为 AXI3 协议,所以出现了兼容性问题,最终嵌套了一个 AXI4 协议的、配置好了相应内容的 AXI Crossbar(在SoC Block Diagram中为 axi3t4l)解决了问题。,尝试,1. 尝试接入搭载 TI-PCM5122 的 I2S 声卡以播放音乐,但是因为时间不足而没有完全领会 AXIS 的精髓,加上板载存储资源不足(不够存储一个完整的 48KHz 及以上的 WAV 文件)而失败。但是实现了从 I2C 模拟器初始化 PCM5122 ,并从 Altera 开发板实现的 I2S Transmitter 播放出了音乐。希望在明年的比赛中吃透 AXI 系列协议并将此 DAC 声卡接入 SoC; 2. 尝试完全重构 SoC,但是因为能力问题不能驾驭 MIG 从而半途失败; 3. 尝试移植 u-boot,但是止步于 SPI 以及 Ethernet 等驱动,而不能实现完整的功能,最终只能进入传说中的 loop() 进行基本的操作(见图); 4. 尝试移植 Linux 5.+ 内核,但是卡在了 OF 阶段,经检查是不能正确传入设备树导致,由于 PMON 貌似不支持 FDT 等,所以必须等待 u-boot 移植成功;,尝试,5. 尝试实现 FrameBuffer,但是因为 LCD 屏幕实现问题而进度缓慢; 6. 尝试实现手写机器人,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论