(2). GO嵌入式开发之 --- 第一个GO程序

Python011

(2). GO嵌入式开发之 --- 第一个GO程序,第1张

一、简述GO语言背景

Wiki: https://github.com/golang/go/wiki

二、基本程序结构

程序的各个部分:

三、应用程序入口

四、退出返回值

五、获取命令行参数

函数式语言

Elixir

Elixir 比 Erlang 更容易编写,具有 Haskell 等语言的函数式编程概念。Elixir是基于Erlang 虚拟机的,其广为人知的特点是运行低延时、分布式、可容错的系统,并成功用于Web开发与嵌入式软件领域。

Elm

Elm是一种用于构建 Web 应用程序的函数式语言。业内一般认为,它适用于创建高可交互应用,例如复杂的用户界面,开发人员可以通过 Elm 快速编写富有表现力的系统。Elm 也以没有运行时异常而闻名。

PureScript

PureScript是一种可编译为 JavaScript 的纯函数式编程语言。与 Haskell 最相似的是,PureScript 最适合用于开发 Web 应用程序和服务器端应用程序。

PureScript 支持类型推断,与其他语言相比,需要明显类型注释要少得多。

Swift

Swift是一种由苹果公司开发的通用编译编程语言,最早的设想是替代上一代编程语言Objective-C ,过程中结合了Objective-C、Rust、Ruby 和 Python等语言的编程思想。目前Swift用于开发苹果自己的手机、服务器、台式机上的应用软件。

程序语言

Go

Go语言是由谷歌公司创造的类似C风格的语言。Go 比 C++ 或 Java 更简洁,比 Ruby 或 Python 更安全。

一些缺点: 编码要求严格。比如,不能混用符号和无符号整数。还有一个明显的遗漏,Go语言没有泛型和继承。

但Go语言的优势同样明显,简单且易于使用。Go语言擅长于网络和多线程方面的编程。

面向对象语言

DART

Dart同样来自谷歌公司具有C语言风格。Dart可以轻松编写JavaScript、Java for Android、本地机器代码或独立的 Dart 虚拟机。它还可以运行后端代码。

Dart 非常适合使用事件驱动代码构建用户界面。根据Dart 团队成员的说法,Dart的优势:可选的静态类型、最小的编译时错误和强大的内置编辑器。

Pony

Pony是一种基于无数据竞争类型和垃圾收集的语言,并使用 actor 模型以及称为引用功能的东西。

你可以把 Pony 想象成某种“Rust 遇上 Erlang”的复合体,没有锁,高并发是其主要优点。

Pony 的缺点是 API 稳定性低、很少有高质量的第三方库和有限的本地工具。

TypeScript

TypeScript是一个基于 JavaScript 静态类型定义构建,并由微软维护且开源编程语言。Visual Studio Code 或Visual Studio 是推荐的IDE编辑器,微软大厂的用户体验和错误检查也不用怀疑。

复合编程语言

Hack

Hack是一种作为 PHP 方言的 HipHop 虚拟机的编程语言。于 2014 年由Facebook创建,允许程序员同时使用静态和动态类型(也称为渐进类型),这为编码提供了灵活性。

Julia

Julia是一种高级通用编程语言,用于计算科学和数值分析。Julia 以动态类型和可重现的高性能特性而闻名。

Julia 在数据可视化和机器学习等方面都有大量用途。事实上,它被英国保险公司 Aviva 用于风险计算,纽约联邦储备银行用于金融建模,甚至气候建模联盟用于气候变化建模。它拥有Fortran、C++、R、Java、C 、Python等的接口,这使其成为最受追捧的新语言之一。

Kotlin

Kotlin是运行在 Java 虚拟机中的更快、更流畅的 Java 版本。它现在是Android 开发的首选语言。根据 Android 开发者网站显示,程序员正转而采用 Kotlin,因为该语言的样板代码更少,空指针异常更少,并且与 Java 有互操作性。

Kotlin 可用于在 iOS 和 Android 上运行的应用程序、不使用额外运行时或虚拟机。

Nim

Nim是一种优先考虑可读性的静态类型语言。通过结合多种语言的特性,Nim 为程序员提供了速度和易用性。

它带有 JavaScript 后端、分散的包管理、自动内存管理、C 和 C++ 库的绑定以及用于调试的回溯。作为一种语言,Nim 是有限的,但它包含一组元编程功能,如泛型、模板和宏,因此开发人员可以在避免冗长代码的同时以不同的风格工作。

OCaml作为此列表中较旧的语言,OCaml是一种多范式语言——既有函数式、命令式和类型安全,也具有面向对象功能。

OCaml 的一些优势:定义数据类型很容易。默认情况下,所有变量都是不可变的。API 稳定,具有良好的库向后兼容性。该语言还为独立应用程序提供自动内存管理和单独编译。

Reason

如果比JavaScript 更快、更简单且类型安全会怎样?

这就是创建Reason的 Facebook 开发者想要回答的问题。不过,他并没有从头开始构建一种新语言,而是采用了 OCaml,并将其调整为类似于 JavaScript。

Reason使用项目 BucketScript编译为 JavaScript,并且可以访问 80% 的 JavaScript 工具和生态系统。它还可以编译为准系统、iOS、Android 和微控制器。

Red

Red是一种最初旨在克服 Rebol 语言限制的编程语言。Red 于 2011 年推出,受 Rebol、Lua 和 Scala 等语言的影响,对高级和低级编程都很有用。

该语言可用于开发从高级 GUI 到低级操作系统的所有方面。Red 拥有人性化的语法、低内存占用和垃圾收集等优点。

Rust

Rust解决了一些与 Go 相同的问题,如系统级别的线程和进程安全,,但Rust 更像 C 风格的语法

但Rust语言的缺点:静态类型和缺乏垃圾收集

Rust可直接访问内存意味着程序员可以编写低级代码,如操作系统内核。Rust 也非常适合嵌入式设备、网络服务和命令行编写。

嵌入式的东西都是要自己开发的 别人能帮你的不多 给你个今年嵌入式的考试大纲 熟悉一下吧 不知道你有什么基础 嵌入式和嵌入式操作系统是两个概念,要是刚入门的话 先不要接触操作系统 从硬件入手

嵌入式系统设计师考试大纲

一、考试说明

1、考试要求:

(1)掌握科学基础知识;

(2)掌握嵌入式系统的硬件、软件知识;

(3)掌握嵌入式系统分析的方法;

(4)掌握嵌入式系统设计与开发的方法及步骤;

(5)掌握嵌入式系统实施的方法

(6)掌握嵌入式系统运行维护知识;

(7)了解信息化基础知识、信息技术引用的基础知识;

(8)了解信息技术标准、安全,以及有关法律的基本知识;

(9)了解嵌入式技术发展趋势;

(10)正确阅读和理解计算机及嵌入式领域的英文资料。

2、通过本考试的合格人员能根据项目管理和工程技术的实际要求,按照系统总体设计规格进行软、硬件实际,编写系统开发规格说明书等相应的文档;组织和指导嵌入式系统靠法实施人员实施硬件电路、编写和调试程序,并对嵌入式系统硬件设备和程序进行优化和集成测试,开发出符合系统总体设计要求的高质量嵌入式系统;具有工程师的实际工作能力和业务水平。

二、考试范围

考试科目1:嵌入式系统基础知识

1.计算机科学基础

1.1数制及转换

o 二进制、八进制、十进制和十六进制等常用数制及其相互转换

1.2数据的表示

o 数的机内表示(原码、反码、补码、移码,定点和浮点,精度和溢出)

o 字符、汉字、声音、图像的编码方式

o 校验方法和校验码(奇偶验码、海明校验码、循环校验码)

1.3算术和逻辑运算

o 计算机中的二进制数运算方法

o 逻辑代数的基本运算和逻辑表达式的化简

1.4计算机系统结构和重要部件的基本工作原理

o CPU和存储器的组成、性能、基本工作原理

o 常用I/O设备、通信设备的性能,以及基本工作原理

o I/O接口的功能、类型和特点

o 虚拟存储存储基本工作原理,多级存储体系

1.5安全性、可靠性与系统性能评测基础知识

o 诊断与容错

o 系统可靠性分析评价

o 计算机系统性能评测方法

2.嵌入式系统硬件知识

2.1数字电路和逻辑电路基础

2.1.1组合电路和时序电路

2.1.2总线电路与电平转换电路

2.1.3可编程逻辑器件

2.2嵌入式微处理器基础

2.2.1嵌入式微处理器体系结构

o 冯.诺伊曼结构与哈佛结构

o CISC与RISC

o 流水线技术

o 信息存储的字节顺序(大端存储法和小端存储法)

2.2.2嵌入式系统处理器的结构和类型

o 常用8位处理器的体系结构和类型

o 常用16位处理器的体系结构特点

o 常用32位处理器的体系结构特点

o 常用DSP处理器的体系结构特点

o 多核处理器的体系结构特点

2.2.3异常

o 同步异常(陷阱、故障、终止)

o 异步异常(中断)

o 可屏蔽中断、不可屏蔽中断

o 中断优先级、中断嵌套

2.3 嵌入式系统的存储体系

2.3.1存储器系统

o 存储器系统的层次结构

o 高速缓存(Cache)

o 内存管理单元(MMU)

2.3.2 ROM的种类与选型

o 常见ROM的种类

o PROM、EPROM、E2PROM型ROM的典型特征和不同点

2.3.3 Flash Memory的种类与选型

o Flash Memory的种类

o NOR和NAND型Flash Memory的典型特征和不同点

2.3.4 RAM的种类与选型

o 常见RAM的种类

o SRAM、DRAM、DDRAM、NVRAM的典型特征和不同点

2.3.5 外存

o 常见外存的种类

o 磁盘、光盘、CF、SD等的典型特征和不同点

2.4 嵌入式系统I/O接口

2.4.1 定时器和计数器基本原理与结构

2.4.2 GPIO、PWM接口基本原理与结构

2.4.3 A/D、D/A接口基本原理与结构

2.4.4键盘、显示、触摸屏接口基本与结构

2.4.5嵌入式系统音频接口

2.5嵌入系统通信及网络接口

o PCI、USB、串口、红外、并口、SPI、IIC、PCMCIA的基本原理与结构

o 以太网、CAN、WLAN、蓝牙、1394的基本原理与结构

2.6嵌入式系统电源分类及电源原理

2.7电子电路设计

2.7.1电子电路设计基础知识

o 电子电路设计原理

o 电子电路设计方法及步骤

o 电子电路设计中的可靠知识

2.7.2 PCB设计基础知识

o PCB设计原理

o PCB设计方法及步骤

o 多层PCB设计的注意事项及布线原则

o PCB设计中的可靠性知识

2.7.3电子电路测试基础知识

o 电子电路测试原理与方法

o 硬件抗干扰测试

3. 嵌入式系统软件知识

3.1嵌入式软件基础知识

3.1.1嵌入式软件的分类(系统软件、支撑软件、应用软件)

3.1.2无操作系统支持的嵌入式软件体系结构(轮询、中断、前后台)

3.1.3有操作系统支持的嵌入式软件体系结构

3.1.4板极支持包基础知识(系统初始化、设备驱动程序)

3.1.5嵌入式中间件(GUI、数据库)

3.2 嵌入式操作系统基础知识

3.2.1嵌入式操作系统体系结构

o 单体结构、分层结构和微内核结构

3.2.2任务管理

o 多道程序技术

o 进程、线程、任务的概念

o 任务的实现(任务的层次结构、任务控制块、任务的状态及状态转换、任务队列)

o 任务调度(调度算法的性能指标、可抢占调度、不可抢占调度、先来先服务、短作业优先算法、时间片轮转算法、优先级算法)

o 实时系统及任务调度(RMS、EDF算法)

o 任务间通信(共享内存、消息、管道、信号)

o 同步与互斥(竞争条件、临界区、互斥、信号量、死锁)

3.2.3存储管理

o Flat存储管理方式

o 分区存储管理(固定分区、可变分区)

o 地址重定位(逻辑地址、物理地址、地址映射)

o 页式存储管理

o 虚拟存储技术(程序局部性原理、虚拟页式存储管理、页面置换算法、工作集模型)

3.2.4设备管理

o 设备无关性、I/O地址、I/O控制、中断处理、缓冲技术、假脱机技术)

3.2.5文件系统基础知识

o 文件和目录

o 文件的结构和组织

o 存取方法、存取控制

o 常见嵌入式文件系统(FAT、JFFS、YAFFS)

3.2.6操作系统移植基础知识

3.3 嵌入式系统程序设计

3.3.1嵌入式软件开发基础知识

3.3.2嵌入式程序设计语言

o 汇编、编译、解释系统的基础知识和基本工作原理

o 汇编语言

o 基于过程的语言(过程/函数、参数传递、全局变量、递归、动态内存分配、数据类型)

o 面向对象的语言(对象、数据抽象、继承、多态、自动内存管理)

o 各类程序设计语言的主要特点和适用情况

3.3.3嵌入式软件开发环境

o 宿主机、目标机

o 编辑器、编译器、链接器、调试器、模拟器

o 常用嵌入式开发工具(编程器、硬件仿真器、逻辑分析仪、示波器)

o 集成开发环境

o 开发辅助工具

3.3.4嵌入式软件开发

o 软件设计(模块结构设计、数据结构设计、内存布局、面向对象的分析与设计)

o 嵌入式引导程序的设计、设备驱动程序设计、内核设计、网络程序设计、应用软件设计)

o 编码(编程规范、代码审查)

o 测试(测试环境、测试用例、测试方法、测试工具)

o 下载和运行

3.3.5嵌入式应用软件移植

4.嵌入式系统的开发与维护知识

4.1系统开发过程及其项目管理

o 系统开发生命周期各阶段的目标和任务的划分方法

o 系统开发项目挂你基础知识及其常用管理工具使用方法

o 主要的系统开发方法

o 系统开发工具与环境知识

4.2 系统分析基础知识

o 系统分析的目的和任务

o 系统分析方法

o 系统规格说明书的编写方法

4.3 系统设计知识

o 传统系统设计方法

o 软硬件协同设计方法

4.4 系统实施知识

o 系统架构设计

o 系统详细设计

o 系统调试技术

o 系统测试

4.5 系统维护知识

o 系统运行管理知识

o 系统维护知识

o 系统评价知识

5.安全性知识

o 安全性基本概念

o 加密与解密机制

6.标准化知识

o 标准化的概念

o 国际标准、国家标准、行业标准、企业标准基本知识

o 代码标准、文件格式标准、安全标准、软件开发规范和文档标准知识

o 标准化机构

o 嵌入式系统相关标准

7.信息化基础知识

o 信息化和信息系统基本概念

o 有关的法律、法规

8.嵌入式技术发展趋势

9.计算机专业英语

o 正确阅读和理解相关领域的英文资料

考试科目2:嵌入式系统设计应用技术

1.嵌入式系统开发过程

1.1系统需求分析方法与步骤

1.2系统设计

o 系统硬件配置

o 系统功能组成分配

o 软硬件功能的分配

o 可行性验证及设计审查

o 系统规格

o 周期,成本及工作量估计

o 开发计划

1.3软硬件协同设计

1.4硬件设计

1.5软件设计

o 软件结构

o 设计评审

o 软件详细设计

1.6系统测试

o 测试环境

o 测试计划(内容、方法、标准、过程、检验)

o 硬件测试

o 软件测试(单元测试、集成测试)

o 软硬件联合测试

o 实施测试

1.7系统评估

1.8 软件维护

2.嵌入式系统硬件设计

2.1嵌入式系统硬件基本结构

2.1.1嵌入式微处理结构与应用

2.1.2 异常及中断处理技术

2.1.3 DMA技术

2.1.4 多处理系统

o 多处理器系统特点

o 多处理器系统构建技术

2.1.5 总线架构

o 应用系统中的总线配置

2.1.6 内存种类及架构

o 存储器系统接口设计

2.1.7数字电路和逻辑电路

o 专用集成电路

o 可编程逻辑控制器件

2.2输入/输出接口设计

2.2.1 输入/输出接口

o 接口信号电平转换

o 接口驱动电路设计

2.2.2输入/输出接口应用技术

o 外围设备

o 串口通信

o 并口通信

o 模拟接口

o 通信接口设备

o 通信标准和协议

o 数据传输方式

2.3外围设备接口应用技术

2.3.1 外围存储设备

o 存储卡,记忆棒,IC卡,MMC卡,SD卡

o DVD 、CD-R 、CD-RW

2.3.2外围输入/输出设备

o 键盘,鼠标,触摸屏

o 液晶板、LED、7段数码管、蜂鸣器

2.3.3电源设计技术

2.4可靠性与安全性设计技术

2.4.1 错误检测与隔离技术

2.4.2 冗余设计

2.4.3 系统恢复设计

2.4.4 诊断技术

2.4.5常用安全标准

2.4.6 抗干扰设计

2.4.7电磁兼容设计

2.4.8系统加密

3.嵌入式系统软件设计

3.1嵌入式系统软件结构设计

3.2嵌入式操作系统应用技术

3.2.1 时间管理

o 系统时间

o 时钟中断

3.2.2内存管理

o 静态内存管理

o 动态内存管理

3.2.3任务管理和任务间的通信

o 任务间的通信机制

o 信号量

o 邮箱

o 消息队列

3.2.4异常处理

o 异常处理方法

o 中断优先级处理方法

o 系统调用

3.2.5嵌入式文件系统应用技术

3.2.6嵌入式系统图形用户接口(GUI)应用技术

3.2.7嵌入式系统数据库应用技术

3.3嵌入式软件设计技术

3.3.1汇编语言设计

o 数据类型

o 汇编语言程序结构

o 汇编语言程序设计及优化

o 子程序调用

3.3.2嵌入式C语言设计

o ANSI-C的数据类型

o C程序结构

o C语言程序设计及优化

o 程序的编译与链接

3.3.3面向对象程序设计与开发

o 面向对象的分析与设计方法UML

o 面向对象的编程语言

o 使用C++进行嵌入式系统开发

o 使用Java进行嵌入式系统开发

3.4 系统级软件设计技术

o 嵌入式系统固件与系统初始化设计

o 设备驱动程序设计

o 硬件抽象层、板级支持包设计

o 嵌入式软件的移植技术

4.嵌入式系统开发技术

4.1系统开发环境

4.1.1开发工具

o 文本编辑器

o 汇编、编译和连接程序

o ICE和ICE监控器

o 配置管理工具

o 逆工程工具

4.1.2平台

o 操作系统

o 分布式开发环境

4.1.3开发环境创建方法及评估

o 开发工作分析

o 开发环境的建立

o 维护、管理、使用开发环境的方法

o 开发环境的评测

4.2实时系统的分析技术

4.2.1实时系统的分析技术

o 结构化分析方法

o 面向对象分析方法

4.2.2实时系统的设计技术

o 结构化分析方法

o 面向对象分析方法

4.3硬件设计环境

4.3.1硬件描述语言

o 硬件开发设计过程

o 硬件描述语言的种类与特点

4.3.2仿真技术

o 逻辑仿真方法

o 逻辑仿真工具

4.3.3大规模集成电路系统的开发方法

o ASIC开发方法

o FPGA设计方法

o IP(intellectual property)

4.4协同设计

o 软硬件任务工和切调

o 设计评审

4.5嵌入式系统低功耗设计技术

o 低功耗系统工作机制

o 低功耗系统模型结构

o 低功耗的硬件设计技术

o 低功耗的软件设计技术

4.6分布式嵌入系统设计

o 分布式系统设计原理

o 分布式系统的通信技术

o 分布式系统设计应用

5.嵌入式系统应用

5.1嵌入式系统在控制领域中的应用

5.2嵌入式系统在手持设备中的应用

5.3嵌入式系统在模式识别中的应用

三、题型举例

1、选择题

若嵌入式系统中采用I/O地址统一编址模式,访问内存单元和I/O设备是通过 (1) 来区分的。

(1) A.数据总线上输出的数据

B.不同的地址代码

C.不同的地址总路线

D.不同的指令

2、问答题

在某个嵌入式操作系统中,任务的状态转换图(不完整)如下,请阅读该图以及下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。

〔说明〕

任务总共有五个状态:休眠状态、就绪状态、运行状态、中断服务状态和等待状态,在任何时候,一个任务只会处于其中的某一个状态。

〔问题1〕(3分)

在单个CPU的系统中,处于运行状态的任务最多有多少个?

〔问题2〕(3分)

对于运行状态、就绪状态和等待状态这间的相互转换,图中并没有画出来,请补充。用文字处理的形式来进行描述,格式形如"运行状态→中断服务状态"。

〔问题3〕6分)

从运行状态可以直接变为等待状态吗?如果不能为什么?如果能什么时候会发生这种转换?举例说明。

〔问题4〕(3分)

从就绪状态可以直接变为等待状态吗?如果不能,为什么?如果能,什么时候会发生这种转换?举例说明。