Category: ICT-Information and Communication Technology

  • 嵌入式开发相关概念知识系列(三)-中断及其实现

    中断(interrupt)是计算机中常常提及的概念,中断好比一种”优先级别高的特权”请求,让正在运行的cpu程序暂停下来并保留现场,转去先服务中断的服务请求,当完成中断请求的服务后,再转回到当前程序现场继续执行。在PC等含有操作系统的设备上,常见的中断服务情景是调用外设如等待用户输入的情景,这时程序调用相关函数(如c语言中的scanf函数),而这些函数进入系统调用从用户态转入到内核态并根据中断表调用中断服务。 在KEA 128的cortex arm cm0+嵌入式芯片中,也有类似的中断概念,比如有FTM(FlexTimer,综合定时器),这个时候基于FTM的中断实现的程序就由两部分组成,一部分为主程序,主要实现应用的逻辑,其中就有使能FTM中断的功能,第二部分就是FTM的中断服务,这个中断服务的逻辑可以按自定义逻辑进行实现,不过中断程序的名称要使用系统提供的函数名(满足arm cm0+的相关开发框架)。这样采用了中断的嵌入式应用程序,一共就有两条独立的程序运行线路,一条主程序,一条中断程序运行线路。 中断的基本过程一般分为中断请求、中断检测、中断响应与中断处理等过程,其中(1)、中断请求是中断源主动将CPU中对应的中断标志位置1,以便向CPU发出中断请求信号;(2)、中断检测,CPU在每条指令结束时会检查中断请求或系统是否满足异常条件,若系统中有中断请求信号,则CPU将会暂停当前运行的任务,转而去对中断请求进行响应;(3)、中断响应与中断处理,首先保护现场,CPU内部寄存器的数据要依次压入RAM堆栈中,然后执行中断服务,中断服务结束后再从RAM堆栈中依次弹出CPU内部寄存器的数据、再返回到中断前的程序。不过这些保护现场与恢复现场的过程是系统自动完成的,用户编程时只需关注主程序和中断服务程序的设计。 一般在操作系统里,进程运行的进本信息在PCB(进程控制块)里,如存在系统调用,处于效率考虑,一般会进行进程切换,调度其他可以运行的进程继续运行,当前进程处于挂起状态,等待终端(外围设备)返回如用户输入结束后唤醒进程进入ready状态等待调度。具体的中断细节和进程调度是操作系统课程里边会有详细描述。 在cortex arm cm0+芯片上,中断的实现方式要简单些,具体可以参考引文中的描述,作为应用程序开发,一般不需要了解中断处理中的CPU上下文的切换的具体过程,程序员只需关注实现使能中断的方式和中断服务程序的编写即可。 关于中断的更多的背景知识和开发细节,后续再具体更新,或在相关课堂或材料中再补充说明。 References

  • 云计算相关技术简介(三)-网络组件

    上篇文章介绍的是OSI网络模型,主要是针对网卡(NIC)的功能进行的计算机信息通信建模,并提供了操作系统级程序(驱动)的实现,这篇文章介绍机器之间通信所需的机器内部的网卡设备及通信协议外,机器与机器以及局域网与局域网之间所需的网络组件。 1、switch ,交换机,交换机(Switch)意为“开关”是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。最常见的交换机是以太网交换机。其他常见的还有电话语音交换机、光纤交换机等。交换机是一个扩大网络的器材,能为子网络中提供更多的连接端口。两层交换机:工作于OSI模型的第2层(数据链路层),故而称为二层交换机。三层交换机:具有部分路由器功能的交换机,工作在OSI网络标准模型的第三层,具体的工作原理可以参考引文。星型网络拓扑几乎是Ethernet(以太网)网络专用,它是因网络中的各工作站节点设备通过一个网络集中设备(如集线器或者交换机)连接在一起,各节点呈星状分布而得名。这种结构是目前在局域网中应用得最为普遍的一种,在企业网络中几乎都是采用这一方式。 2、Gateway,网关,顾名思义,即为网络关口,即可以理解为网络之间的关口(gate,门),不同局域网络之间通过网关进行通信,同时也可以负责不同网络之间不同的协议之间的通信所需要的协议转换,就好比语言翻译,不同的语言之间要通过一个翻译机才能相互理解。 3、routers,路由器,负责接收,分析和向前发送(forward)网络数据包,路由器通过分析网络包中的目的地(destination, or target ip)通过路由表和头从而选择最好的数据包传输路径。路由器设备带有固定的路由选择算法,比如最短路径算法或扩展等,具体的路由算法以后在计算机网络的课程中去进一步详细介绍。 简要总结一下,Hub,switches,routers,gateways,一般hub,switch在局域网组件中使用,gateway主要的功能在于不同网络协议之间的通信,router主要的作用在于不同局域网之间的信息数据包的转发。选择合适的网络组件去搭建和配置网络将会在后续的工程实践中去进一步介绍和总结。 References

  • 嵌入式开发相关概念知识系列(二)-KEA128开发环境

    Kinetis® EA系列32位Arm® Cortex®MCU广泛适用于质量要求和长期供货保证要求都很高的汽车和工业应用。KEA 128为车规级微控制器芯片,汽车计算机基础这门课程采用该芯片的开发板进行教学和实验。本篇文章主要介绍相关的软硬件开发环境,包括SWD,J-Link软件和Keil MDK集成开发环境。 (1)、SWD下载器,Serial Wire Debug,代表串行线调试,是ARM设计的协议,用于对其微控制器进行编程和调试。基于Cortex-M内核的单片机,目前主流的下载接口就是JTAG和SWD。市面上支持SWD调试接口的下载器很多,比如:ST-Link、 J-Link、 e-Link、 GD-Link等市面上绝大部分用于Cortex-M内核处理器的下载器都支持。通俗的来说程序下载器的作用就是结合软件(如下面介绍的J-Link)将程序烧制到嵌入式设备上。 (2)、J-Link软件安装,JFlash软件的使用,J-Flash是J-Link系列工具里用于FLASH操作的GUI工具,也支持命令行方式操作。支持各大厂商不同嵌入式芯片的程序烧制,如下图所示为选择了SKEAZ128系列的设备。 (3)、集成开发环境Keil MDK,提供了arm的c编译器等环境。可以将c程序通过编译器和工具生成hex文件。 (4)、通过SWD(一端和mcu相连,一端和pc机器相连)后,通过菜单target->connect即可以完成mcu和pc机器的连接(连接状态可以从下图中的下方的状态表中可以看到),J-Flash 的file菜单里的open data file可以加载上述编译完成的hex程序文件。然后 、Target→Production Programming,可将载入的.hex 文件下载到目标 MCU 中。如果下载成功,则会在 J-Flash 的“LOG”窗口中显示“Target erased,programmed and verified successfully”,选择 J-Flash 菜单中的“Target→Manual Programming→Start Application”命令,使MCU 开始运行程序,观察程序运行效果。当然,也可以通过重新给 MCU 通电的方式,使MCU 开始运行程序。 References

  • 云计算相关技术简介(二)-OSI网络模型

    本篇文章主要介绍云计算环境中的相关的网络技术,主要面向openstack network(neutron)组件,其提供了网络服务API,实现了一个Software Defined Network(SDN)的解决方案。本篇介绍网络技术中的基础概念和知识。 1、Ethernet,以太网。以太网是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。以太网是应用最普遍的局域网技术,取代了其他局域网技术如令牌环、FDDI和ARCNET。在OSI(Open System Interconnect)模型中,以太网协议为第二层,也就是数据链路层(data link layer),在数据链路层,主机之间通过交换frames(数据帧)进行通信,每个主机在局域网中由一个唯一的物理地址标记media access control(MAC) address。在openstack中,每一个虚拟机器的实例都由一个唯一的mac地址,这个mac地址和宿主机的mac地址不同。mac地址是一个48位的信息,通常用十六进制进行标识,比如08:00:27:b9:88:74。一般的mac地址是硬编码到网卡(Ethernet network interface card ( NIC ))中去的,不过现代的NIC允许通过程序去更改mac地址。在linux中可以通过ip命令查看网卡信息。在局域网内部,每一个主机都可以直接发送帧信息到其他的主机,局域网也可以支持广播,也就是一台主机可以发送帧信息给在网络上的每一台主机(通过特殊的目标地址ff:ff:ff:ff:ff:ff),ARP和DHCP就是利用了局域网广播技术的两个很有名的协议,局域网支持广播,有时候局域网也被称为broadcast domain. 当一个NIC接收到一帧数据时,一般NIC会check帧的目标地址是否位NIC的mac或是广播地址,但是在云计算环境中,frame的目标地址也可能是计算实例的,因此网卡也可以设置promiscuous mode,不过滤帧数据,直接将所有的帧数据传给上层的操作系统。现代的局域网用交换机去实现网络主机之间的互联,网络交换机,是一个扩大网络的器材,能为子网络中提供更多的连接端口,以便连接更多的计算机。 2、VLAN,虚拟局域网,VLAN是建立在物理网络基础上的一种逻辑子网,因此建立VLAN需要相应的支持VLAN技术的网络设备。当网络中的不同VLAN间进行相互通信时,可以采用路由的支持,这时就需要增加路由设备——要实现路由功能,既可采用路由器,也可采用三层交换机来完成。openstack可以利用vlan技术隔离不同项目的网络交通(traffic),通过一个物理的switch,可以实现三个隔离的网络(三个vlan)。一个虚拟局域网中的站点所发送的广播数据包将仅转发至属于同一VLAN的站点。 3、子网和ARP,IP协议中的IP地址一般分为两个部分,网络号(network number)和主机标识(host identifier),两个主机如果具有相同的网络号,则他们属于同一个子网。ARP假设所有在同一个子网的机器在同一个局域网内,网络管理员在分配IP地址和掩码的时候需要注意这一点,否则ARP可能不能正常工作。 子网掩码有两种表示方式,如IP地址192.168.1.5,前24位位网络号,再网络掩码为255.255.255.0,或可以一起写为192.168.1.5/24。当第一次host a尝试和host b进行通信时,不知道目标的mac地址位置,host A就需要发送一个ARP请求广播到局域网,然后host B接收到这个信息之后知道是要相互通信(ip地址为host b的地址),就将自己的mac地址发给了a。然后a和b就可以直接发送帧信息了。 4、DHCP,Dynamic Host Configuration Protocol (DHCP) 可以动态获取IP地址,一个DHCP服务器将IP地址分发给网络主机(也可称为DHCP clients),一般过程为:(1)客户端(DHCP Client)发送获取IP请求,广播一个udp请求,(2)DHCP server发送一个可用的ip地址信息给client,(3)client发送一个request给server,同意这个ip,(4)server发送一个信息给client,同意这个分配。 5、IP,IP协议定义了怎样去将数据报文通过路由达到不同的局域网的主机上。IP协议依赖于特定的网络主机,称为路由或网关。路由是一个主机连接至少两个局域网络,能够将数据报文从一个局域网前向发送到另一个局域网,一个路由器有多个ip地址,每个ip地址属于一个局域网。 6、TCP/UDP/ICMP,建立在IP层之上的传输层协议,TCP为面向连接的协议,路由只在连接建立的时候,后续为有序传输;UDP为非连接的协议,每个UDP报文相互独立路由,上层的应用可以依靠相关的报文字段在应用层上进行组装。 还有上层的诸多应用协议,如HTTP,FTP,HTTPS等,都是在IP层之上建立的应用层协议,如有必要,可以根据自己应用的特点自行设计网络应用协议。 OSI model是计算机网络技术的重点内容,也是计算机通信技术核心和关键,是计算机网络技术的基石,在有设计网络通信的软件开发中,我们一般会用到抽象的软件开发库进行开发,如基于套接字(socket)的开发,有系统提供原生的socket编程接口,以及一些优化了开发过程的网络开发库,如python的twisted,c++ boost的asio库等等。 互联网七层或五层协议设计精巧,好比剥洋葱一样,下一层会在上一层的基础上添加一定的关于特定层信息的报文头,通过每个层的不同的抽象功能,使得计算机通信从少量的文本,到大量的流媒体带宽需求都会显得游刃有余。而且基于端口的协议实际上也借鉴了现实世界中的港口的概念,数据传输好比货物运输,计算机的不同端口就实现了每个任务独立的通信。因此可以说计算机网络技术是单个计算机的精兵强将变成声势浩大的百万大军的有利武器,是计算机技术中的最伟大发明之一。更多的网络协议细节会后续在计算机网络课程中详细介绍。 References

  • 云计算相关技术简介(一)-虚拟化及NUMA架构

    云计算是数字化产业的硬软件基础设施,涵盖技术的方方面面,这篇文章主要从一些底层的硬件方面的技术来简要介绍一下,这些技术底层的原理可能比较复杂,我们主要了解其作用和用法,介绍也主要从我们的需求出发。 CPU虚拟化技术,CPU的虚拟化技术可以单CPU模拟多CPU 并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。CPU的虚拟化技术是一种硬件方案,支持虚拟技术的CPU带有特别优化过的指令。纯软件虚拟化解决方案存在很多限制。Intel自2005年末开始便在其处理器产品线中推广应用Intel Virtualization Technology(Intel VT)虚拟化技术。AMD方面也已经发布了支持AMD Virtualization Technology(AMD VT)虚拟化技术的一系列处理器产品。启用虚拟化只需要在物理cpu的bios中开启虚拟化,然后在vmware等系统中才可以使用虚拟化特性。 UMA(Uniform Memory Access),直译为“统一内存访问”,这样的架构对软件层面来说非常容易,总线模型保证所有的内存访问是一致的,即每个处理器核心共享相同的内存地址空间。但随着CPU核心数的增加,这样的架构难免遇到问题,比如对总线的带宽带来挑战、访问同一块内存的冲突问题。为了解决这些问题,有人搞出了NUMA。NUMA 全称 Non-Uniform Memory Access,译为“非一致性内存访问”。这种构架下,不同的内存器件和CPU核心从属不同的 Node,每个 Node 都有自己的集成内存控制器(IMC,Integrated Memory Controller)。在 Node 内部,架构类似SMP,使用 IMC Bus 进行不同核心间的通信;不同的 Node 间通过QPI(Quick Path Interconnect)进行通信。Openstack 在 Juno 版本中新增 NUMA 特性,用户可以通过将 Guest 的 vCPU/Memory 绑定到 Host NUMA Node上,以此来提升 Guest 的性能。 hypervisor: 一种运行在物理服务器和操作系统之间的中间层软件,可以允许多个操作系统和应用共享一套基础物理硬件。可以将hypervisor看做是虚拟环境中的“元”操作系统,可以协调访问服务器上的所有物理设备和虚拟机,所以又称为虚拟机监视器(virtual machine monitor)。hypervisor是所有虚拟化技术的核心,非中断的支持多工作负载迁移是hypervisor的基本功能。当服务器启动并执行hypervisor时,会给每一台虚拟机分配适量的内存,cpu,网络和磁盘资源,并且加载所有虚拟机的客户操作系统。 KVM是首个被集成到 Linux 内核的 hypervisor 解决方案,并且实现了完整的虚拟化。qemu-kvm也是常用到的具体实现技术。 References

  • 视觉生成式AI技术简介及可能的应用创新点

    最近几年生成式AI(generative AI)的技术很火,和人类的大脑类比,生成式AI类比于人类的文档撰写,绘画设计和视频制作等,好的AI技术可以服务人类,将人类从一部分的工作中解放出来,去做更有创造性和创新型的事情。这里简要阐述一下视觉生成模型技术的一些技术思路,不正确的地方欢迎批评指正。 在图像生成方面,生成式AI经历了几次技术方案的迭代,从VAE,GAN,到diffusion models,效果越来越好,而且已经在视频生成领域取得了很大的技术进步,如最近的sora模型,效果好,是最近很热门的话题,小视频的介绍也有不少。图像生成都是从一个二维的随机高斯分布的image作为输入,通过模型的计算得出最后生成的模型,生成的结果的多样性在于输入中高斯输入的随机性以及训练数据的多样性。独立高斯分布可以理解为输入中的每一个像素点的值服从高斯分布,每一个像素点可以理解为图像中对应位置特征的值,不同点的独立高斯分布作为输入说明每一次输入的对应特征不一样,从而会带来丰富多样的结果。从随机的输入(根据训练集的特性随机效果的生成)或者再加上有意义的prompt生成满足特定场景的视觉效果。 1、VAE,VAE生成式算法主要是生成一个隐空间(latent space)假设隐变量服从高斯分布,而且尽可能的接近均值为0,标准差为1的标准正态分布(可以通过KL loss进行约束)而且在VAE中,隐变量的值也是通过训练集中数据的输入通过网络计算得出的,从数据输入到隐空间的计算相当于一种编码器,然后隐空间经过解码器恢复到原始数据空间。在生成的时候可以通过随机生成器生成隐空间的数据后再decode即可; 2、GAN,一度非常火热的算法,根据高斯随机分布的输入数据或条件数据通过生成网络和判别网络间的相互博弈交替训练去动态生成。大概轮流交替训练过程如下:(1)、先训练生成式网络,生成网络的loss,以及生成的结果在判别网络中的输出为true为ground truth;(2)、然后训练判别式网络,将生成网络的结果(fake)在判别网络中的输出为false为ground truth,而真实的数据在判别网络中的数据结果为true。具体一点的说明为:在训练生成式网络阶段(判别器网络参数固定),判别器尽可能将任务生成的结果判别为真实的,并且满足生成的条件(如条件生成,如风格迁移等),而在训练判别式网络阶段(生成式网络参数固定),判别器尽可能将生成网络生成的结果判别为fake,而真实的数据结果判别为true,这样在生成网络训练过程中,生成的结果越来越和真实的接近,生成的能力越来越强,而且判别式网络训练的过程中,生成的结果和真实的结果尽可能区分开,判别式网络的能力越来越强,这样不断的在生成网络和判别网络相互不段变强博弈的过程中,最后达到判别器网络”真假不分”的状态,也就是判别器区分不了是ground truth还是生成器生成的结果。 3,diffusion models,采用迭代的去噪过程,从原始的高斯随机数据一步步去噪生成结果的图像数据,数学推导比较繁琐,可以参考引文。其中stable diffusion models在图像生成领域是一个里程碑式的结果,其首先将图像用VAE模型将其转换到隐空间,然后在压缩后的隐空间进行模型的训练,并根据transformer的kv特性将条件prompt进行(CLIP进行text encoding)融合,从而实现文生图的功能。最近的sora的原理没有看到,但感觉应该是二维图像空间的扩展,据说也是在隐空间进行的训练。具体细节以后有机会再去详细了解。 最后总结畅想一下,未来视觉生成领域的可能创新和进步:(1)、条件视觉生成,这个可以用来一致性视觉生成的实现,如现在生成一段文字描述的视频,其中的人物或场景能否提取作为条件作为后续文字的背景条件生成?如果可以实现,生成长剧本的影视场景倒也是有可能的;(2)、多模态生成,影视短视频中视频加语音混合生成,比如人说话,或者和环境交互产生的动作和语音效果;(3)、可编辑式视频生成,生成的视频可能大部分满足自己的要求,但有些内容和场景需要进一步去编辑调整,可以通过文字表达的方式,也比如基于视频的control net的约束生成实现。 References

  • 云计算专业企业实践(一)-技术概要了解

    今天上午去浦东参加了合作企业的实践活动,合作企业位于浦东软件园,今天去的是他们的一个楼层,一层楼敞开的大空间里坐了好几百办公人员,沟通起来倒也方便,将这么多人组织起来去行动劳动创造数字化产业的市场价值,企业的组织者们也应该也是挺有成就感的吧。 今天是第一次参加企业实践活动,一起讨论了近一个半小时,初步定下来后续一周要去一两天去进行工程实践,给定一个云计算平台搭建的完整任务,可以从服务器的布置和组网,交换机之间的网络连接,原生操作系统的安装,到openstack的安装和部署,云存储模块的搭建(对象存储,块存储等),到上层的容器,k8s的搭建部署,以及云平台的监控等。这些技术内容涵盖云计算技术的方方面面,对于云计算专业的实践老师来说,这些技术的实践技能基本都是需要掌握的。 简单梳理一下相关技术概念,还不是特别的详细,期待后续有更多的实践经验记录。 1、云存储,ceph云存储技术,可以实现块存储(虚拟机里边的硬盘块这种容量比较大的存储),对象存储(通过URL实现访问)和文件存储,不同种存储方式存储协议不同,对象存储一般为bucket和object两级结构,文件存储一般为类似于nfs(network file system)和windows里边的共享文件的形式。存储模块中也要对存储机制的背后原理要有所了解,如crush算法等。 2、openstack云计算平台,openstack由很多个组件组成,对每个组件要有比较详细的了解,有些模块如管理界面等都可以进行二次开发来丰富其功能。如用户(租户)管理组,怎么管理局域网和公网等,openstack的源码中外围的管理界面等模块由python实现,其他的核心模块由c/c++实现。 3、云平台的物理服务器的功能分配,有计算存储融合在一起的搭建方式,也可以有专门的计算节点和存储节点,具体的组件方式到时候要看实践经验去总结,哪种性能更好更稳定。以及考虑云平台的备份功能,集群节点数的设计也要需要考虑。 4、容器,k8s等相关PAAS平台工具和框架,以及devops,cicd等研发和运维持续集成和部署等上层的工具和应用也是后续需要进一步熟悉的内容。以及算力平台的需求,GPU异构芯片的加入,使得网络配置(如InfiniBand 网络)和调度方法都会有不同。 云计算平台的优势是资源利用率高,管理方便等。和企业的相关合作,通过项目制的方式来熟悉掌握相关技术,是数字化时代对技术教育和学习的一个很好的方法和途径,感谢企业的支持,期待后续的合作中能够有对云计算平台技术栈有更深入的认识,更多的收获,也会及时将感受感想和学习到的经验分享给大家。 References

  • 嵌入式开发相关概念知识系列(一)-硬件基础知识和开发环境

    嵌入式开发是个比较大的宽泛的应用开发范畴,有基于智能家居物联网的嵌入式应用,也有车载嵌入式芯片这种功能较为庞大复杂的应用。宽泛源于实际应用需求的多样性带来的所需计算设备的多样性,下面就计算设备和开发环境的相关知识和概念做一下说明和归类,有的内容不一定完全正确,欢迎批评指正以便后续进行勘误。 1、指令集:几种常见的cpu架构和指令集的关系如下:(1)、intel x86架构,CPU可能实现了多个指令集x86,x86-64,MMX,SSE,SSE2,SSE3,SSSE3 ,而这些指令集中的指令让cpu完成的动作都比较复杂,所以也称为CISC(Complex Instruction Set Computers 复杂指令集);(2)AMD amd64架构的cpu 兼容了x86指令集还拓增了3D-Now!指令集,用于加强对3D显示的支持。(3)ARM ARMv1~ARMv7架构的cpu实现了Thumb指令集和ARM指令集。这些指令集中的一条指令让cpu完成的动作都比较简单,所以也称为RISC指令集(Reduced Insturction Set Computers 精简指令集)。(4)Atmel AVR系列是一种基于改进的哈佛架构、精简指令集(Reduced Instruction Set Computing, RISC)的微控制器,Arduino不仅仅是全球最流行的开源硬件,也是一个优秀的硬件开发平台,更是硬件开发的趋势。在此需要注意的是处理器架构和指令集架构的区别。我们常用的嵌入式设备开发板有:(1),基于arduino硬件的微控制器的应用,arduino的开发板作为优秀的硬件开发平台,在嵌入式开发中经常会用到;(2)基于Cortex-M0为32位、3级流水线RISC处理器,其核心仍为冯.诺依曼结构,是指令和数据共享同一总线的架构。Kinetis® EA系列32位Arm® Cortex®MCU广泛适用于质量要求和长期供货保证要求都很高的汽车和工业应用。(3)soc片上系统,是为特定的功能设计的完成特定目标功能的系统。 2、单片机和计算机:单片机和CPU是包含关系,单片机通过超大规模集成电路技术将处理器CPU、随机存储器RAM、存储器ROM、输入输出和中断系统、定时器/计数器等功能集成在硅片上。(主要分为CPU、硬盘、内存、主板四部分)单片机主要应用于嵌入式系统,如智能家居、工业控制、汽车电子等领域,因为它们小巧、低功耗、高可靠性。计算机采用存储器与处理器分离的硬件架构,其中存储器与处理器由不同的芯片实现,并通过总线进行通信。而soc是片上系统,是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。如nvidia的orin soc系统就是基于智能驾驶系统及应用构建的片上系统。 3、开发环境:(1),支持Cortex-M、Cortex-R4、ARM7和ARM9系列器件的keil mdk集成开发环境,包括行业领先的ARM C/C++编译工具链等;(2)、arduino集成开发环境Arduino IDE;单片机通常不具备操作系统。简单来说,单片机是一种集成了微处理器、内存、输入输出和其他外设的微型计算机系统。它通常被用于嵌入式系统中,用于执行特定的任务,如控制和监控设备。由于资源有限,单片机通常使用裸机编程,即直接编写和操作硬件的程序,程序员直接管理硬件资源和任务调度,实现输入输出、数据处理、控制等功能,而不依赖于操作系统。上述的IDE编译的程序会烧制到开发板直接启动程序运行。至于带有操作系统的soc甚至异构多核soc上面的开发,一般也会提供专有的开发环境工具实现程序的编写,调试和烧制。 References

  • 云计算专业发展的一点思考

    学校申请下来了云计算专业,而且有三年制和五年一贯制两个班级,怎么更好的去设计教学内容和规划,是需要用点心思去考虑而且要在过程中有好的执行的。 首先,要有比较好的教师队伍,职业学校的同学们基础不是特别突出,老师对专业的知识和技能更要有好的理解和掌握,才能将相关知识点内容深入浅出的介绍给同学们。特别是技术技能方面的专业,老师们的特长不仅仅在于表达,而且要有较为熟练的动手实践和解决相关专业问题的能力,这样才能更接地气的将工程类的课程传授给同学。 其次,也要有好的课程设计,特别是实践类的课程,知识点的罗列讲解,同学们接受的知识也可能是零散的记忆,怎么将知识技能点串联起来并通过项目的形式进行具体化,通过项目实践中碰到的问题去触发知识的进一步理解和掌握并解决问题,也是不错的课程设计,将知识点和实践进行紧密结合,学以致用。 再次,要考虑产学相结合,有机会能将同学们的实践和相关企业的需求相结合,锻炼同学们切实解决实际应用中的需求问题,以问题驱动锻炼动手实践能力,比较适合较为高年级的同学们在实习和毕业设计阶段去拓展相关专业能力。 也可以考虑到时候建立一个社区,同学们可以在社区相互讨论问题,不仅仅是老师的一带多,这样精力也许也吃不消,同学们之间也可以在社区养成互相帮助协作解决问题的良好氛围,锻炼团队友好合作的能力。 教学过程和软件过程管理也有相似之处,要对同学们的学习积极性,效果等状态进行记录和跟踪,并适时的进行调整和督促,动态去掌握每个同学的学习情况,针对每个同学的特殊性进行个性化教学,最终实现同学们整体的学习效果有好的表现,尽可能使得同学们在学校养成良好的工程师的思维方式和素养。

  • 新时代的教育

    这两天看到了数字化教育的国际大会的新闻消息,也看了下制作的微型纪录片,拍的挺好的,遂记录一下相关的信息和感想。 1、数字化教育可以在全世界共享优秀的教学资源,著名学校的明星老师的课程是值得广泛传播的,我记得比较清楚的是MIT的教授线性代数课程的老教授,他的课程娓娓道来,线性代数的推导过程以及空间含义解释的清晰有序,更容易理解和接受。好的中小学课程资源可以在更广范围共享和传播,特别是不发达或欠发达地区的教育,有了好的资源是孩子们相比他们的父辈们实现跨越成长的更好的支撑; 2、新型发明的电子设备可以采集同学们的各种信息,如云笔可以记录同学的作业答题情况,电子手表或相关设备可以记录同学的运动状态,从而方便分析同学们的体育锻炼的情况;更多的或可以再发明出的电子设备可以在德智体美劳各方面发挥作用; 3、数字化教育也可以用在特殊教育上面,每一个人都应该享有好的教育,因材施教或因个人特殊情况而享有特殊的教育条件,使得每个人的成长都得到合理的关注,发展和尊重; 4、职业教育是新时代数字化教育的新要求,信息产业从早期的PC到互联网再到AI,技术的不断进步使得各种产业都在随着技术发生着巨大的变革,当前智能制造,无人车间以及黑灯工厂等先进的工业生产,以及智慧有机农业等产业不断创新和发展,数字化技术中的人工智能,万物互联的物联网,机器人技术等都存在着需要专业性要求比较强,技能专业的新需求,职业教育的发展能够更快的向社会输送这些专业性的技术技能人才; 5、更广的国际合作,当前国际关系比较复杂,竞争对立的形势需要去改变,打破隔阂更好的合作,实现不同国家的人们更好的合作协同,更好的数字化教育可以作为更好国际合作的桥梁,不同国家的同学可以通过网络,元宇宙等技术建立更广泛的链接,从他们的小时候就可以生活在更宽阔的地球环境中,相互友好合作的基因自然就能够逐渐更好养成。 今天农历小年,祝大家小年快乐,生活越来越美好! References