RISC-V

说说两个冷门却又不冷门的预处理指令#pragma和#error!

家住魔仙堡 提交于 2020-08-09 02:13:32
本篇笔记分享两个冷门却又不冷门的预处理指令。 冷门是因为我们平时可能比较少用(或者说我们的编码能力还没到需要注重这些细节的水平),不冷门是因为这几个指令在一些优秀的C代码中用得很多。 比如在Linux内核代码中: #error指令 #error 指令让预处理器发出一条错误信息,并且会中断编译过程。下面我们从Linux代码中抽取出来一小段代码并做修改得到示例代码: 这段示例代码很简单,当RX_BUF_IDX宏的值不为0~3时,在预处理阶段就会通过#error 指令输出一条错误提示信息: "Invalid configuration for 8139_RXBUF_IDX" 下面编译看一看结果: 不清楚C语言编译的几个阶段的朋友可以阅读往期笔记: 【C语言笔记】编译过程 #pragma指令 #pragma指令应该是预处理指令中最复杂,其用法很多。下面简单看一下常见用法。 1、#pragma pack 我们可以利用#pragma pack来改变编译器的对齐方式: #pragma pack(n) /* 指定按n字节对齐 */ #pragma pack() /* 取消自定义字节对齐 */ 下面依旧以示例来说明。我们在之前的笔记: 《结构体内存对齐你真的弄懂了?看这道经典笔试题》 中也有提到结构体对齐的问题,那篇笔记我们没有自定字节对齐,按照编译器默认的对齐方式,代码为: 运行结果为:

蜂鸟E203系列——Windows下运行hello world例程

最后都变了- 提交于 2020-08-05 09:17:27
创建 hello world 例程 配置 hello world 例程 配置工具路径 加载 BSP 包 配置编译和链接选项 配置项目的编译路径和文件 编译 hello world 例程 运行 hello world 例程 调试 hello world 例程 创建 hello world 例程 选择file->new->C / C++ Project 2.选择 C Managed Build ,并点击 next 输入项目名称并选择Project Type为Hello World RISC-V C Project ,并点击 next 项目基本设置,并点击 next 设置 debug 和 release 属性,并点击 next 在Toolchain path选择 *\ HBird-Eclipse_2018_09 \ GNU MCU Eclipse \ RISC-V Embedded GCC \7 .2 .0-4-20180606-1631 \ bin 选择finish,就可以看到创建的工程 这里会发现会有Errors:Program "echo" not found in PATH,不要急,这是工具链路径的问题,请继续向下看。 配置 hello world 例程 配置工具路径 鼠标左键点击工程名称,然后右键选择Properties 选择 MCU->Build Tools Path

3年出货5000万颗!国内老牌芯片商用平头哥玄铁处理器研发新芯片

前提是你 提交于 2020-08-04 15:24:00
7月22日,据记者了解,国内最大智能语音芯片商全志科技(以下简称“全志”)已和阿里旗下半导体公司平头哥达成战略合作,全志将基于平头哥玄铁处理器研发全新的计算芯片,该芯片将应用于工业控制、智能家居、消费电子等领域,预计3年出货5000万颗。 由于AIoT场景的爆发,芯片设计模式正在迎来新的变化,传统通用芯片架构的问题日益凸显。为了降低芯片设计门槛,以平头哥为代表的企业率先布局开源RISC-V架构技术,并推出了更开放、更灵活的自研处理器IP,可满足不同场景的性能及功耗需求。 去年7月,平头哥发布玄铁910处理器及普惠芯片计划 过去几年,RISC-V生态逐渐成熟,并迅速成为芯片产业链的主流选择,全志是积极拥抱该技术的芯片商之一。作为国内老牌芯片厂商,全志芯片年出货量在亿级以上。过去十余年,其核心产品均基于ARM架构开发。现在,平头哥玄铁系列处理器为全志提供了新的选择。 据悉,双方首款合作产品已经开始研发,即全志基于平头哥玄铁906和902处理器开发通用算力芯片,量产周期可进一步缩短,并且有望在功耗上实现新的突破,该芯片可应用于智能家居、工业控制及消费电子领域。未来,全志还将推出更多基于玄铁系列处理器的芯片。 “芯片原厂、终端厂商、应用开发商对 RISC-V都非常期待,而平头哥本身在RISC-V技术上拥有深厚的技术积累,我们希望和平头哥一起推动RISC-V生态快速发展。

论首家「学院派」AI 芯片公司如何倒掉?筹了2亿美元却止步于市场

拟墨画扇 提交于 2020-05-01 18:03:42
      学院出身,喊话英伟达,技术惊艳,框架开源,融资激进……剧本是否似曾相识,套用在那些响当当的明星 AI 芯片公司身上似乎都能对号入座,但是很不幸,先驱已经倒在了退潮期的沙滩上。 过分追求性能、功耗等参数上的优越性很大程度上将造成在实际应用上脱节——编程困难和不可移植,很难在实际应用中发挥效果,更难建立生态。 换句话说,产品再好,但客户用不上。    撰文 | 徐丹、吴昕    编辑 | 四月    2020 年,第一家 AI 芯片公司倒在了黎明前。   美国 AI 芯片公司 Wave Computing 接近倒闭,已申请破产保护,中国区工厂全部关闭。尽管 Wave Computing 负责人第一时间向媒体解释,公司并非倒闭,只是申请破产保护,进行资产重组。 但显然并不能改变什么。   Wave Computing,2010 年成立于美国加利福尼亚坎贝尔,公司愿景是「数据追踪」,定位云计算市场,从数据中心到边缘云,对客户的数据进行深度学习训练。核心产品是基于 dataflow 技术架构的芯片 DPU,每项技术都处在行业研究前沿,在加速神经训练上甚至能够超越 GPU 1000 倍。 可以称得上最早的一批 AI 芯片公司。    Wave 早期团队与学院派出身的 MIPS 渊源颇深,甚至说脱胎于 MIPS 也不为过 ——Wave 的七位高管有四位都曾任职 MIPS,其中 CEO

论首家「学院派」AI 芯片公司如何倒掉?喊话英伟达,开源框架,筹了2亿美元却止步于市场

南楼画角 提交于 2020-05-01 13:20:14
学院出身,喊话英伟达,技术惊艳,框架开源,融资激进……剧本是否似曾相识,套用在那些响当当的明星 AI 芯片公司身上似乎都能对号入座,但是很不幸,先驱已经倒在了退潮期的沙滩上。 过分追求性能、功耗等参数上的优越性很大程度上将造成在实际应用上脱节——编程困难和不可移植,很难在实际应用中发挥效果,更难建立生态。 换句话说,产品再好,但客户用不上。 撰文 | 徐丹、吴昕 编辑 | 四月 2020 年,第一家 AI 芯片公司倒在了黎明前。 美国 AI 芯片公司 Wave Computing 接近倒闭,已申请破产保护,中国区工厂全部关闭。尽管 Wave Computing 负责人第一时间向媒体解释,公司并非倒闭,只是申请破产保护,进行资产重组。 但显然并不能改变什么。 Wave Computing,2010 年成立于美国加利福尼亚坎贝尔,公司愿景是「数据追踪」,定位云计算市场,从数据中心到边缘云,对客户的数据进行深度学习训练。核心产品是基于 dataflow 技术架构的芯片 DPU,每项技术都处在行业研究前沿,在加速神经训练上甚至能够超越 GPU 1000 倍。 可以称得上最早的一批 AI 芯片公司。 Wave 早期团队与学院派出身的 MIPS 渊源颇深,甚至说脱胎于 MIPS 也不为过 ——Wave 的七位高管有四位都曾任职 MIPS,其中 CEO Derek Meyer 曾经是 MIPS

《痞子衡嵌入式半月刊》 第 3 期

泄露秘密 提交于 2020-04-28 13:03:32
痞子衡嵌入式半月刊: 第 3 期 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly ),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。 上期回顾 : 《痞子衡嵌入式半月刊: 第 2 期》 唠两句 今天是雨水与惊蛰交节之时,惊蛰节气在农耕上有着相当重要的意义,自古以来我国人民很重视惊蛰这个节气,把它视为春耕开始的节令。 新冠肺炎疫情在逐日好转,相信大部分人都已经开始陆续复工了,但痞子衡东家还是决定 3 月 23 号之后再考虑全面复工的事。因此这些天痞子衡在家主要是以看技术文档写技术文档以及线上客户支持为主,最近原创文章产出比较惊人,一周能达到 3 篇,写文章这种事,写作过程中比较痛苦,但写完还是成就感满满的。 最近痞子衡不断接到技术群的朋友约稿,趁着在家办公的时机,痞子衡会加快写作,尽早完成大家的约稿。 本期共收录 3条资讯、4个项目、2个工具、1个RT产品,希望对你有帮助! 资讯类 <font color="red">1、面向音频/语音应用的恩智浦 i.MXRT600 已上市</font> 恩智浦半导体于 Embedded World 2020 上宣布其旗下主打音频/语音应用的全新跨界处理器 i.MXRT600 已开始正式供货

通过9个Linux-0.11实验学习操作系统

微笑、不失礼 提交于 2020-04-28 03:28:28
<font size="3"> ## 简介 2019年秋,我自学了一下哈工大的操作系统课程,感觉其设计的教程和实验作为操作系统入门是个不错的选择(虽然是基于较老的Linux-0.11写的)。实验大致覆盖了操作系统中的核心概念,例如启动、中断、外设IO、上下文切换/系统调用,进程管理与调度,进程间通信,内存管理/地址转换,文件系统等。而且每个实验在教材中都有对应的说明,做起来很顺畅。我做完后整理了一下相关资源,希望能帮到一些自学的同学。 <br /> 指导教材 该课程使用的教材是 李治军 和 刘宏伟 编著的《操作系统原理、实现与实践》(ISBN: 978-7-04-049245-3),你可以在 这里 获得。除了和课程对应的实验,这本书还在最后设计了4个大的项目,包含内核级线程,虚拟内存,GUI以及网络协议的实现。 另外,赵炯 编著的《Linux内核完全注释-内核版本0.11》也是一本不错的参考书,你可以在 这里 获取。 <br /> 实验资源 你可以在 Hack-Linux-0.11 上获得开发环境需要的工具,以及每个实验的参考代码、示例效果和注意事项。该仓库的布局说明如下: oslab.zip:原Linux 0.11的代码和在GNU/Linux下开发所需的工具,例如Bochs 2.3.7和GCC 3.4。 tmp/: 一些杂项,和主体实验没什么关系。 Lab 6.Ext.

集成电路竞赛——Robei杯(瞎)解读

馋奶兔 提交于 2020-04-23 09:59:06
#今天也是咸鱼的一天~ 今年报名了一个新的比赛——全国大学生集成电路创新创业大赛,一个新开的A类赛事,工信部主办的。了解了这个比赛之后,我才知道,这个比赛也不是什么新起之秀,是由原来的很多小型的赛事,来组成的一个大比赛。 今年的集成电路大赛有12个赛道,有些赛道还不止一个赛题,可谓是涵盖了各种各样的专业领域。当然,最匹配的专业还是电子信息工程、通信工程、自动化、测控、集成电路。 比赛分了好几个方向,数字与SOC设计、射频与模拟设计、FPGA设计与应用,半导体测试,EDA算法设计、芯片应用与系统设计、还有一个迷惑的“创新实践杯”。(这个创业比赛在众多理工科赛道中显得特别迷惑) Robei杯 我和队友参加的是 ”Robei杯“ ,要基于 Robei EDA 来设计实现一个用FPGA控制的机器人。这里EDA的作用是来做系统代码的仿真验证设计。 初赛的试题长这个样子: 而,Robei EDA 长这个样子: Robei 赛题解读 首先声明我是一只菜鸡,FPGA用的也不是大佬,赛题解读也未必准确,只是抛砖引玉,发表一下自己的看法,不喜勿喷。(欢迎大佬来指点,感激不尽) 我把赛题里觉得是重点的地方,都标红了。(橙红色) 红色马克笔 :算是比赛赛题一些比较关键的地方,抛开这些,其它的东西不是那么必要的。A组只能是专科或本科生,研究生不能参加Robei 杯。 粉红色下划线 :赛题出现的原因

织女星开发板使用RISC-V核驱动GPIO

倖福魔咒の 提交于 2020-04-22 08:54:52
前言 织女星开发板是 OPEN-ISA社区 为中国大陆地区定制的一款体积小、功耗超低和功能丰富的 RISC-V评估开发板,基于NXP半导体四核异构RV32M1主控芯片。 两个RISC-V核:RI5CY + ZERO_RISCY。 两个ARM核: Cortex-M4F + Cortex-M0+ 。 4个核被分为两个子系统,大核CM4F/RI5CY和小核CM0+/ZERO-RISCY,片上集成1.25 MB Flash 、384 KB SRAM,其中1 MB的Flash被大核所使用,起始地址0x0000_0000,另外的256 KB Flash被小核所使用,起始地址0x0100_0000。利用该开发板,用户可以快速建立一个使用 RV32M1 的 RISC-V应用和演示系统。详细的介绍可以参考: 真正的RISC-V开发板——VEGA织女星开发板开箱评测 ,本篇文章介绍如何基于RISC-V RI5CY/ZERO内核来点亮板载的RGB_LED/STS_LED、读取按键输入,演示GPIO的输入输出和外部中断功能。 准备工作 在进行以下操作之前,要确保开发环境已经搭建完成,而且能正常下载调试。 织女星开发板RISC-V开发环境:Eclipse + riscv32 工具链 + OpenOCD调试工具 织女星开发板SDK包:rv32m1_sdk_riscv 织女星开发板的原理图 RV32M1参考手册

Rust 1.42.0 发布

ぃ、小莉子 提交于 2020-04-10 09:50:59
https://www.oschina.net/news/114076/rust-1-42-0-released Rust 1.42.0 现已发布,该版本的亮点包括: unwrap ping 时更有用的紧急消息、分段模式、弃用 Error::description 等等。具体更新内容如下: Language 现在,用户可以将切片模式语法与子切片一起使用。 用户现在可以在单变量枚举上使用 #[repr(transparent)] ,这意味着其可以创建一个枚举,该枚举具有其所包含类型的确切布局和 ABI。 一些 syntax-only 更改: 在特性定义中,在句法之前允许使用 default 包含在 impls 中的项目(即 const,type 和 fns)在语法上可能会遗漏它们的主体以支持 ; . 现在,语法上允许在 impls 中关联类型的界限(例如 type Foo: Ord; )。 ... (C 变量类型)可以在语法上直接作为任何函数参数的类型出现。 这些仍然在语义上被拒绝,因此用户可能会收到一个错误,但是这些更改可以通过过程宏和条件编译来查看和解析。 Compiler 添加 tier 2* 以支持 armv7a-none-eabi 添加 tier 2 以支持 riscv64gc-unknown-linux-gnu Option::{expect,unwrap} 和