硬件层
硬件层中包含嵌入式微处理器、存储器(SDRAM、ROM、Flash等)、通用设备接口和I/O接口(A/D、D/A、I/O等)。在一片嵌入式处理器基础上添加电源电路、时钟电路和存储器电路,就构成了一个嵌入式核心控制模块。其中 *** 作系统和应用程序都可以固化在ROM中。
(1)嵌入式微处理器
嵌入式系统硬件层的核心是嵌入式微处理器,嵌入式微处理器与通用CPU最大的不同在于嵌入式微处理器大多工作在为特定用户群所专用设计的系统中,它将通用CPU许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统在设计时趋于小型化,同时还具有很高的效率和可靠性。
嵌入式微处理器的体系结构可以采用冯·诺依曼体系或哈佛体系结构;指令系统可以选用精简指令系统(ReducedInstructionSet Computer,RISC)和复杂指令系统CISC(Complex Instruction Set Computer,CISC)。RISC计算机在通道中只包含最有用的指令,确保数据通道快速执行每一条指令,从而提高了执行效率并使CPU硬件结构设计变得更为简单。
嵌入式微处理器有各种不同的体系,即使在同一体系中也可能具有不同的时钟频率和数据总线宽度,或集成了不同的外设和接口。据不完全统计,全世界嵌入式微处理器已经超过1000多种,体系结构有30多个系列,其中主流的体系有ARM、MIPS、PowerPC、X86和SH等。但与全球PC市场不同的是,没有一种嵌入式微处理器可以主导市场,仅以32位的产品而言,就有100种以上的嵌入式微处理器。嵌入式微处理器的选择是根据具体的应用而决定的。
(2)存储器
嵌入式系统需要存储器来存放和执行代码。嵌入式系统的存储器包含Cache、主存和辅助存储器。
1、Cache
Cache是一种容量小、速度快的存储器阵列它位于主存和嵌入式微处理器内核之间,存放的是一段时间微处理器使用最多的程序代码和数据。在需要进行数据读取 *** 作时,微处理器尽可能的从Cache中读取数据,而不是从主存中读取,这样就大大改善了系统的性能,提高了微处理器和主存之间的数据传输速率。Cache的主要目标就是:减小存储器(如主存和辅助存储器)给微处理器内核造成的存储器访问瓶颈,使处理速度更快,实时性更强。
在嵌入式系统中Cache全部集成在嵌入式微处理器内,可分为数据Cache、指令Cache或混合Cache,Cache的大小依不同处理器而定。一般中高档的嵌入式微处理器才会把Cache集成进去。
2、主存
主存是嵌入式微处理器能直接访问的寄存器,用来存放系统和用户的程序及数据。它可以位于微处理器的内部或外部,其容量为256KB~1GB,根据具体的应用而定,一般片内存储器容量小,速度快,片外存储器容量大。LIBUSB是一款简单好用的USB通讯开发库,一般HID设备用该库通讯能大大降低开发周期,使用如下,首先需要为设备安装驱动
在libusb的bin目录下有一个inf_wirzedexe的文件,该文件是生成驱动所用,具体步骤可以网上百度,很是傻瓜式 *** 作,安装好驱动之后就可以使用其通讯函数了,
安装好驱动之后的情况如下

使用visual studio开发,将lib_msvc目录下的libusblib文件添加到工程目录并将lusb0_usbh文件加入工程,如下

之后在MFC工程中如下 *** 作
OnInitDialog方法中调用usb_init函数,这是初始化函数库的,每个工程需要而且仅仅需要初始化一次
查找系统中全部USB的方法如下
usb_find_busses();
usb_find_devices();//重新寻找设备
for (bus = usb_get_busses(); bus; bus = bus->next)
{
for (dev = bus->devices; dev; dev = dev->next)
{
usbCount++;
deviceNameEmpty();
handle = usb_open(dev);
usb_get_string_simple(handle,dev->descriptoriProduct,nameBuffer,128);
usb_close(handle);
pidBuffer[usbCount-1] = dev->descriptoridProduct;//枚举所有设备
vidBuffer[usbCount-1] = dev->descriptoridVendor;
pvnBuffer[usbCount-1] = dev->descriptorbcdDevice;
deviceNameAppendFormat("%s",nameBuffer);
((CComboBox)GetDlgItem(IDC_COMBO_USB_DEVICE_ENMU))->AddString(deviceName);
}
}
打开usb设备的方法如下
//现在遍历全部设备,找到对应PID vid的设备打开
usb_find_busses();
usb_find_devices();//重新寻找设备
for (bus = usb_get_busses(); bus; bus = bus->next)
{
for (dev = bus->devices; dev; dev = dev->next)
{
if(dev->descriptoridProduct == myPid && dev->descriptoridVendor)
{
//PID VID相同
usb_handle = usb_open(dev);
}
}
}
发送数据的方法
char sendBuffer[64] = {0};
CString sendString;
GetDlgItem(IDC_EDIT_USB_SEND_MESSAGE)->GetWindowText(sendString);
for(int i = 0; i < 64; i++)
{
if(i >= sendStringGetLength())sendBuffer[i] = 0;
else
{
sendBuffer[i] = sendStringGetAt(i);
}
}
usb_claim_interface(usb_handle, 0);//默认设备
usb_interrupt_write(usb_handle,0x01,sendBuffer,64,100);
usb_release_interface(usb_handle, 0);
接收数据的方法
char receiveBuffer[64] = {0};
CString receiveString;
int recvCount = 0;
usb_claim_interface(usb_handle, 0);//默认设备
recvCount = usb_interrupt_read(usb_handle,0x81,receiveBuffer,64,100);
usb_release_interface(usb_handle, 0);
if(recvCount > 0)
{
GetDlgItem(IDC_EDIT_USB_RECV_SHOW)->GetWindowText(receiveString);
for(int i = 0; i < recvCount; i++)
{
receiveStringAppendChar(receiveBuffer[i]);
}
GetDlgItem(IDC_EDIT_USB_RECV_SHOW)->SetWindowText(receiveString);
每次发送和接手之前需要调用usb_claim_interface将函数库和 *** 作系统关联起来
有了这些基本方法,通讯应该就不成问题了
详细代码见链接
>看系统的包含内容。
物联网就是物物相连的互联网,物联网 *** 作系统是一个通用的概念,与“嵌入式 *** 作系统”一样,是一类 *** 作系统的统称。其中 *** 作系统都包含HelloX、ARM Mbed OS、Android IoT/Brillo、Windows 10 IoT Core、WatchOS、Ubuntu Core 16、μCLinux、QNX、TRON、μT/OS、FreeRTOS、TinyOS等等还有很多种,物联网 *** 作系统是新一代信息技术的重要组成部分。
知识共享许可协议说明
您可以自由地:
分享 在任何媒介以任何形式复制、发行本文档
演绎 修改、转换或以本文档为基础进行创作
只要你遵守许可协议条款,许可人就无法收回你的这些权利
惟须遵守下列条件:
署名您必须提供适当的证书,提供一个链接到许可证,并指示是否作出更改。您可以以任何合理的方式这样做,但不是以任何方式表明,许可方赞同您或您的使用。
非商业性使用 您不得将本文档用于商业目的。
相同方式共享 如果您的修改、转换,或以本文档为基础进行创作,仅得依本素材的授权条款来散布您的贡献作品。
没有附加限制 您不能增设法律条款或科技措施,来限制别人依授权条款本已许可的作为。
声明:
当您使用本素材中属于公众领域的元素,或当法律有例外或限制条款允许您的使用,则您不需要遵守本授权条款。
未提供保证。本授权条款未必能完全提供您预期用途所需要的所有许可。例如:形象权、隐私权、著作人格权等其他权利,可能限制您如何使用本素材。
为了方便用户理解,这是协议的概述 可以访问网址>
2前言
目的
本文档介绍Huawei LiteOS的体系结构,并介绍如何进行开发和调试。
读者对象
本文档主要适用于Huawei LiteOS的开发者,主要适用于以下对象:
物联网端侧软件开发工程师
物联网架构设计师
keil studio桌面版会于2021年年底上线,KEIL Studio的完全体应该是:支持浏览器版,桌面版,并且支持通过IDE和命令行连续集成。面向物联网,机器学习和单片机。
Keil Studio的第一个组件Keil Studio Cloud已经开始beta版测评,支持在浏览器上添加软件包,编辑,调试和Git。
用户可以在浏览器直接远程连接桌面版IDE。
直接集成Git,支持团队协作开发和现代 CI 工作流。
灵活的在线编译器最早是在Mbed上推出的,现在全面加入Keil Studio。
针对物联网,推出OTA编程,测试和更新一条龙。
针对机器学习,让M内核物联网节点直接对采集数据做计算。
blinker是一个物联网接入方案,旨在让大家可以畅快DIY自己物联网设备
ios、android都支持,本地、远程都支持,蓝牙、WiFi都支持
可自己拖拽布局设备控制界面,自由打造你的物联网设备
blinker具有以下特性:
其由服务器端、app端、设备端组成,可以部署到几乎所有物联网平台
app端支持ios、android
设备端可以使用蓝牙、WiFi、MQTT等方式接入,支持Arduino、freeRTOS、mbed OS、Linux等开发平台
服务器端可以部署到阿里云、腾讯云、OneNET、百度云、AWS、google cloud等平台
通过界面布局器,DIY用户可自己拖拽布局设备控制界面,自由打造你的物联网设备
通过专属SDK,认证用户可以使用Blinker开发自己的产品,并用于商业用途
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)