好吧,拖延症犯了,懒癌末期周末最后一天才补帖子,下面更新(飞思卡尔&恩智浦 忠实用户,字字手敲):
开发板:LPC824-breakout
特点:小巧灵活,上手简单
使用感受:
社区组活动的时候申请到的小板子,也是人生的第一块LPC开发板。整个板子很小巧,板型刚好是DIP40封装的大小,感觉直接插到51开发板上就能用了。这款片子最让我感觉最深的功能,应该就是引脚配置开关矩阵吧。这是一个很有意思的功能。开关矩阵模块使数字外设可以灵活地分配到外部的引脚。使用开关矩阵机制,数字外设对应的外部引脚不再固定,大大增强外部设备布局的灵活性。这样使用起来不要太方便,有时候PCB画错了,直接软件修改一下,就能补救回来,开关矩阵是相当有趣且很有用的设计。
官方对其的定位,是代替传统的8051内核的。在实际使用过程中,就性能和外设而言,确实比以前用的STC51强上很多:硬件CRC模块,4路I2C总线接口,3路UART,2路SPI接口,1个多速率定时器,1个自唤醒定时器,1个状态可配置定时器(SCT),1个DMA控制器,1个12位ADC模块,1个模拟比较器,独特的开关矩阵。这些都是STC51无法比拟的。但是相对的,开发起来会复杂一点,好在官方提供的不少的例程可以参考。
开发板:FRDM-K64
特点:经典kinetis,外设齐全,性能强,USB+以太网
使用感受:
手上的这块FRDM-K64应该可以说是我最喜欢的开发板之一了,信用卡大小,Arduino R3接口,还带有一个以太网座子。板载的K64芯片支持USB full speed OTG功能,最早我就是在FRDM-K64学习USB协议栈的,SDK的USB协议栈,提供了很多的USB demo,是很不错的参考。
USB host的设备协议比较复杂,所以当初只研究device部分。kinetis芯片中使用的全速USB的IP叫KHCI,以此对应的高速USB的IP叫EHCI。在使用时,需要在usb_device_config.h文件中设置当前FRDM-K64支持的IP,即 #define USB_DEVICE_CONFIG_KHCI (1U)。对于应用来说,相当重要的就是usb_device_descriptor.c/h文件,里面定义了各种USB设备枚举与通信时需要的描述符。
最近在研究USB PD,虽然FRDM-K64硬件本身并不支持USB PD,但是恩智浦公司提供了OM13588拓展板,Type-C和供电协议的功能主要由扩展板上的PTN5110芯片提供,过I2C接口驱动此芯片实现供电协议和Type-C功能。官方有提供USB PD议栈,里面实现了Type-C规范和PD3.0 规范的基本功能。例如Type-C热拔插检测状态机,供电协议信息发送接收功能。目前正在啃协议栈中。
因为kinetis系列芯片的相似度非常高,所以在外设齐全的FRDM-K64板子上,你几乎可以把整个系列玩流畅了,做到一通百通。而且是也是一块非常好的练习平台,用来学习TcpIP和USB协议。
开发板:LPC55S69-EVK
特点:双核CM33,更快更安全
使用感受:
这板子,新东西很多,目前还没有很深入的去学习这款开发板,但是走马观花的也学到了很多新姿势。
1.首先这是一颗双核的芯片,对称架构的cortex M33核,分为core0和core1。可以同时为两个核编程,需要两个工程。默认core0为主核,core1为从核,官方提供的multice工程,core0工程是依赖于core1的,所以需要先编译core1的工程,再去编译core0的1工程,否则会报错。
2.LPC55S69的两个核通过MCMGR和RPMsg-Lite来进行管理和通信。 MCMGR这个库的主要功能是维护系统中所有核心的信息,控制辅助核的启动和关闭,以及远程核心监视和事件处理。RPMsg-Lite是RPMsg协议的轻量级实现。 RPMsg协议定义了标准化的二进制接口,该接口用于在异构多核系统中的多个核之间进行通信。与传统的OpenAMP实施相比,RPMsg-Lite减少了代码大小,简化了API,并提高了模块性。
3.LPC55S69的Trustzone技术,可以为系统打造一个类似于沙盒的隔离机制,将安全世界和非安全世界彻底隔离。通过特定的命令使CPU在两种状态之间切换。
CPU在安全状态时,只能运行处于安全存储区的代码,可以访问安全存储区和非安全存储区的数据。
CPU在非安全状态时,只能运行处于非安全存储区的代码,只能访问非安全存储区的数据。
trustzone的程序也分为两个工程,安全世界的s工程和非安全世界的ns工程,其中ns工程依赖于s工程,以trustzone_hello_world为例,需要先编译hello_world_s工程,然后再编译hello_world_ns工程,不然会报错。如果再加上core1的参与,则需要三个工程,三个工程才能跑起来hello_world,那可是相当牛逼了。
4.在传统的通用MCU中,最普遍的做法是将密钥的明文存储在片内的OTP或者Flash中,这样攻击者就有机会从片内OTP或者Flash中获取到密钥。LPC55S69内置的PUF是SRAM PUF。由于SRAM的硅结构特征,每一个SRAM的数字特征都是独一无二的。具有不可克隆特性。即使是NXP,也不可能制造出两颗数字特征一模一样的SRAM PUF。所以,我们称芯片内SRAM的独一无二的数字特征为芯片的指纹。当芯片断电以后,芯片内的PUF并不保留任何信息,传统的Crack Fuse/Flash手段也就无效了,自然也就避免了传统的片内OTP Fuse和Flash在断电后被暴力读取的风险。
5.PRINCE模块,它可以在写进Flash数据的时候进行实时加密,读Flash上的内容时实时解密。可以看做是Flash控制器上面的加密引擎,一旦使能,PRINCE就会过滤Flash读写路径的数据,并进行实时加解密。 这种实时加密解密的操作,谁顶得住,要破解数据可是相当的难了。
6.PowerQuad是恩智浦自主研发的一个轻量级的硬件DSP加速器,通过Cortex-M33内核提供的协处理器接口,可以以最高的效率为传统的DSP数学计算进行加速。PowerQuad提供的硬件级加速,比同频的Cortex-M33内核的计算速度要快几倍到十几倍,性能十分强劲。同时恩智浦还提供与CMSIS-DSP一致的API,使得用户可以无缝移植。
开发板:MIMXRT1060-EVK
特点:性能极强的跨界处理器
使用感受:
imx rt1050的升级版,主要升级点:片内RAM由512KB升到1MB,一路百兆以太网口升到两路,增加CAN FD模块。
RT1060带有两个SDIO接口,用来驱动wifi模块很适合。
wifi模块:Murata 1DX M.2 EVB
驱动方式 :SDIO + Freertos + Lwip
为了获取最高的传输性能,需要把RT1060的sdio管脚工作电压设置为1.8v,再将sdio的时钟设置为50MHz。在芯片ram允许的范围内,尽可能大的设置lwip的TCP_WND的数值。利用iperf工具测试wifi的网络性能,效果相当不错。主要还是得益于rt1060的高主频和大容量TCM.
开发板:MIMXRT1010-EVK
特点:极具性价比,性能价格两开花
使用感受: 其实相对于高性能外设全的imx rt1050/1060/1064系列,我一直更倾向于imx rt1020/1015/1010系列:LQFP封装,两层板布线,不变的主频更优惠的价格!特别是刚推出的imx rt1010这个片子,中国制造,我觉得它毫无疑问的会创造出许多的优秀产品。比如在语音识别,二维码扫描等产品方面,很容易开花结果。 这个板子我也还没怎么研究,所以无法暂时测评什么,不过单纯从价格上来看,真的很香!以往的imx rt系列,先不说芯片啥价格,作为个人,想买块官方开发板,价格真的高的吓人。而MIMXRT1010-EVK这块板子,官方零售价竟然只需要10美刀,太香了,给力! 有高速USB OTG接口,I2S接口,SAI接口,相当不错,足以应付很多应用场合了。为了cost down取消以太网接口,也算是精准定位了(毕竟你还是可以加点钱上imx rt1020的)。
|