计算机标准模块,SGET发布新OSM模块计算机标准1.0版,计算机模块设计小型化里程碑...

12月10日消息,SGET是一个主持和制定嵌入式计算机技术规范的技术联盟,日前宣布发布新的OSM计算机模块标准1.0版。OSM(开放标准模块)定义了可直接焊接和可扩展的嵌入式计算机模块的首批标准之一,并标志着模块化COM /载体设计小型化的里程碑,用信用卡大小的模块代替了信用卡大小的模块。

99a13fd217a4b783c85dd14038f646f6.jpg

该规范旨在标准化跨不同插槽,制造商和架构的基于MCU32,ARM和x86架构的低功耗和超低功耗应用处理器的封装和接口集。新模块标准的目标应用包括与IoT连接的嵌入式,IoT和运行开源操作系统并在恶劣工业环境中使用的边缘系统。

OSM模块为ODM和OEM提供了超小型的外形尺寸,具有诱人的价格和高可扩展性。由于这些模块已为应用程序准备就绪,并随附所有必需的软件驱动程序和BSP,并且由于该规范是开源的(包括硬件和软件),因此我们希望它们对于全球活跃的嵌入式和IoT系统具有很高的吸引力开发社区”,SGET STD.05标准开发团队主席Martin Unverdorben解释说,该团队于2019年10月开始工作。

OSM模块旨在简化和加速处理器的设计。同时,应用程序变得与处理器无关,这使它们具有可伸缩性和面向未来。OSM规范还通过BGA设计和自动表面贴装技术(SMT)提供了更高的耐用性,可以进一步降低批量生产中的生产成本。

所有OSM模块都是根据Creative Commons Plus(CC +)双重许可发布和许可的。这允许开放的许可模型,例如用于一组定义的材料,组件和软件的知识共享署名-相同方式共享许可(CC B-SA 4.0),以及用于该组中未包含的所有内容的商业许可。这确保了开发数据将公开可用。但是,在不违反开源思想的前提下,仍然有可能在商业上许可载板设计的知识产权(IP)。

新的OSM规范通过可焊接的BGA mini模块大大缩小了SGET模块规范的范围,该模块比以前可用的模块要小得多:即使最大的OSM模块(尺寸为45x45mm)也比µQseven(40x70mm)缩小了28%,而后者也是由SGET,比SMARC(82x50mm)小51%。

新的OSM规范中的其他模块尺寸甚至更小:OSM尺寸0(零)的占地面积最小,在30x15mm上具有188个BGA引脚。OSM Size-S(Small)尺寸为30x30mm,带332针; OSM Size-M(Medium)在304x45mm上提供476针; Size-L(Large)为45x45mm,带有662个BGA针。相比之下,SMARC指定314引脚和Qseven230。这意味着BGA设计可以在更小的占位面积上实现更多的接口,这构成了新OSM标准的另一个独特优势。

接口的类型和设计会有所不同,具体取决于OSM模块的大小。在最大配置下,OSM模块提供了构成开放式可编程嵌入式IoT,边缘系统(包括GUI)的所有功能。Size-S或更高版本的模块提供视频接口,最高可支持1x RGB和4通道DSI。Size-M模块可以另外支持2个eDP / eDP ++,而Size-L增加了1个LVDS图形接口。从Size-S到更高的所有模块还提供4通道相机串行接口(CSI)。

d315a575b9c7381a5d3a362e2cae929c.jpg

L型模块提供多达10个PCIe通道,用于快速连接外围设备。Size-M提供2x PCIe x1,Size-S 1x PCIe x1。考虑到它们的尺寸极小,Size-0模块目前没有提到的任何I / O,但提供了以下列出的所有接口。

OSM规范为系统间通信提供了多达5倍的以太网。此外,所有模块都具有所谓的通信区域,为无线通信或现场总线集成提供18个天线信号引脚。最多有4个USB 2.0或2个USB 3.0(仅在L型中),最多2个CAN和4个UART。闪存存储介质可以通过UFS连接。多达19个引脚可用于制造商特定的信号。

为了完成功能集,多达39个GPIO,SPI,I2C,I2S,SDIO和2x模拟输入。为了将来的安全,并确保将来的任何扩展都向后兼容,最多保留58个引脚供将来使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用Java读写.hdf5多数据集的例子: ```java import ncsa.hdf.hdf5lib.H5; import ncsa.hdf.hdf5lib.HDF5Constants; public class MultipleDatasetExample { public static void main(String[] args) { // Create a new HDF5 file int fileId = H5.H5Fcreate("example.h5", HDF5Constants.H5F_ACC_TRUNC, HDF5Constants.H5P_DEFAULT, HDF5Constants.H5P_DEFAULT); // Create two datasets and write data to them int dataset1Id = createDataset(fileId, "dataset1", new int[] { 2, 3 }, new int[] { 1, 2, 3, 4, 5, 6 }); int dataset2Id = createDataset(fileId, "dataset2", new int[] { 3, 2 }, new double[] { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 }); // Read data from the datasets int[] data1 = readIntArrayDataset(dataset1Id); double[] data2 = readDoubleArrayDataset(dataset2Id); // Print the data System.out.println("Dataset 1:"); for (int i = 0; i < data1.length; i++) { System.out.print(data1[i] + " "); } System.out.println(); System.out.println("Dataset 2:"); for (int i = 0; i < data2.length; i++) { System.out.print(data2[i] + " "); } System.out.println(); // Close the datasets H5.H5Dclose(dataset1Id); H5.H5Dclose(dataset2Id); // Close the HDF5 file H5.H5Fclose(fileId); } private static int createDataset(int fileId, String name, int[] dimensions, int[] data) { // Create a new dataspace int dataspaceId = H5.H5Screate_simple(dimensions.length, dimensions, null); // Create a new dataset int datasetId = H5.H5Dcreate(fileId, "/" + name, HDF5Constants.H5T_STD_I32BE, dataspaceId, HDF5Constants.H5P_DEFAULT, HDF5Constants.H5P_DEFAULT, HDF5Constants.H5P_DEFAULT); // Write the data to the dataset H5.H5Dwrite(datasetId, HDF5Constants.H5T_NATIVE_INT, HDF5Constants.H5S_ALL, HDF5Constants.H5S_ALL, HDF5Constants.H5P_DEFAULT, data); // Close the dataspace H5.H5Sclose(dataspaceId); return datasetId; } private static int createDataset(int fileId, String name, int[] dimensions, double[] data) { // Create a new dataspace int dataspaceId = H5.H5Screate_simple(dimensions.length, dimensions, null); // Create a new dataset int datasetId = H5.H5Dcreate(fileId, "/" + name, HDF5Constants.H5T_IEEE_F64BE, dataspaceId, HDF5Constants.H5P_DEFAULT, HDF5Constants.H5P_DEFAULT, HDF5Constants.H5P_DEFAULT); // Write the data to the dataset H5.H5Dwrite(datasetId, HDF5Constants.H5T_NATIVE_DOUBLE, HDF5Constants.H5S_ALL, HDF5Constants.H5S_ALL, HDF5Constants.H5P_DEFAULT, data); // Close the dataspace H5.H5Sclose(dataspaceId); return datasetId; } private static int[] readIntArrayDataset(int datasetId) { // Get the dataspace and dimensions of the dataset int dataspaceId = H5.H5Dget_space(datasetId); int[] dimensions = new int[H5.H5Sget_simple_extent_ndims(dataspaceId)]; H5.H5Sget_simple_extent_dims(dataspaceId, dimensions, null); // Read the data from the dataset int[] data = new int[dimensions[0] * dimensions[1]]; H5.H5Dread(datasetId, HDF5Constants.H5T_NATIVE_INT, HDF5Constants.H5S_ALL, HDF5Constants.H5S_ALL, HDF5Constants.H5P_DEFAULT, data); // Close the dataspace H5.H5Sclose(dataspaceId); return data; } private static double[] readDoubleArrayDataset(int datasetId) { // Get the dataspace and dimensions of the dataset int dataspaceId = H5.H5Dget_space(datasetId); int[] dimensions = new int[H5.H5Sget_simple_extent_ndims(dataspaceId)]; H5.H5Sget_simple_extent_dims(dataspaceId, dimensions, null); // Read the data from the dataset double[] data = new double[dimensions[0] * dimensions[1]]; H5.H5Dread(datasetId, HDF5Constants.H5T_NATIVE_DOUBLE, HDF5Constants.H5S_ALL, HDF5Constants.H5S_ALL, HDF5Constants.H5P_DEFAULT, data); // Close the dataspace H5.H5Sclose(dataspaceId); return data; } } ``` 这个例子创建了一个的.hdf5文件,然后创建了两个数据集,并将数据写入这些数据集。随后,它从这些数据集中读取数据,并将其打印到控制台上。最后,它关闭了这些数据集和.hdf5文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值