澳门赌博:基于mbedTLS实现的嵌入式固件知识产权?;し桨?/h1>
嵌入式应用的领域越来越广泛,功能需求也越来越复杂,有些嵌入式产品要求在产品出厂后,使用过程中保留有固件升级的功能,以保证用户可以使用最新的功能和及时修正产品bug。支持固件升级就意味着在软件上留有“后门”(Bootloader与外界的交互),如果这个“后门”?;げ坏被嵩斐晒碳胄孤?,针对这一安全隐患,本文讨论的话题就是如何提高嵌入式Bootloader程序的安全性,有效防止黑客的hacking和cloning,借助的工具是arm的mbedTLS加密算法库。

揭秘微信赌博群 www.b03i.com.cn 我们先来了解一下什么是mbedTLS。MbedTLS前身是开源加密算法库PolarSLL,现已被arm公司收购并由arm技术团队进行维护更新,是对TLS和SSL协议实现的算法库。mbedTLS的目标是:易于理解,使用,集成和扩展。mbedTLS核心代码用C编程语言编写,实现SSL??楹透髦旨用芩惴?,并提供各种加密算法的自测试代码。和其他TLS/SSL算法库实现不同,mbedTLS主要是面向小型嵌入式设备,代码紧凑,最小完整的TLS堆栈需要60KB的程序空间和64KB的RAM空间,而且执行效率高,可以说是行业内最小巧的SSL加密算法库。另外,mbedTLS是高度??榛纳杓疲好扛鲎榧?,如加密函数,可以独立于框架的其余部分使用。mbedTLS完全是由C语言编写的,没有外部依赖,因此,mbedTLS是应用于嵌入式系统最理想的TLS加密算法库。更重要的一点是,mbedTSL是完全OpenSource的,支持Apache 2.0 license 或者GPL 2.0 license双重许可,可以自由应用于商业项目中。

上海润欣科技正在开发一个用于智能门锁等领域的指纹??橄钅?,用到的主控芯片是基于ARM Cortex-M4内核的MCU,但是这个MCU没有代码读出?;すδ?,为了避免产品被非法克隆,必须引入一种?;せ评刺岣卟返陌踩?。我们使用mbedTSL算法库中的RSASSA-PSS数字签名算法对MCU芯片中的UID和指纹传感器UID来进行签名(Sign)和验证(Verify),保证每个被签名产品的唯一性(不可复制)和合法性。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1发热.png

原文签名(Sign)???????????????????????????????????? 签名验证(Verify)

一、具体的实施步骤:

第1步:将mbedTLS生成的密钥对中的私钥存放与本地服务器,并禁止外部访问,以保证私钥的安全性;

第2步:利用MCU的UID和指纹传感器的UID通过上述本地服务器上的私钥及签名生成工具生成数字签名sig文件;

?易图通图图.png

第3步:将上述第二步生成的sig签名文件保存到Bootloader特定区域;

第4步:将mbedTLS生成的密钥对中的公钥保存到APP固件中;

第5步:Bootloader更新APP固件时,利用APP中的公钥对Bootloader中的签名文件sig进行校验(Verify),校验通过,说明Bootloader和APP固件均为原厂合法固件,否则Bootloader拒绝引导执行APP固件,达到?;げ啡碛舶嫒ǖ哪康?。

聚一聚.png

二、使用到的mbedTLS资源和API函数

1、mbedTSL代码包目录下使用VS2010或以上版本生成RSA密钥对生成工具:rsa_genkey.exe,用来生成上述步骤中第一步中的密钥对;

2、mbedTSL代码包目录下使用VS2010或以上版本生成RSASSA签名生成工具rsa_sign_pss.exe,以用来生成上述步骤中第二步中的sig文件;

3、mbedTSL代码包目录下使用VS2010或以上版本生成RSASSA签名验证工具rsa_verify_pss.exe,已确保代码的正确性;

4、MCU代码中使用到的mbedTLS API函数:

/*

?* Initialize an RSA context 初始化RSA算法内容

?*/

void mbedtls_rsa_init( mbedtls_rsa_context *ctx,

?????????????? int padding,

?????????????? int hash_id )

{

??? memset( ctx, 0, sizeof( mbedtls_rsa_context ) );

?

??? mbedtls_rsa_set_padding( ctx, padding, hash_id );

?

#if defined(MBEDTLS_THREADING_C)

??? mbedtls_mutex_init( &ctx->mutex );

#endif

}

?

#if defined(MBEDTLS_PKCS1_V21)

/*

?* Implementation of the PKCS#1 v2.1 RSASSA-PSS-SIGN function

* RSASSA-PSS签名算法实现函数

?*/

int mbedtls_rsa_rsassa_pss_sign( mbedtls_rsa_context *ctx,

???????????????????????? int (*f_rng)(void *, unsigned char *, size_t),

???????????????????????? void *p_rng,

???????????????????????? int mode,

???????????????????????? mbedtls_md_type_t md_alg,

????????????????????????

unsigned int hashlen,

const unsigned char *hash,

unsigned char *sig )

{

??? size_t olen;

??? unsigned char *p = sig;

??? unsigned char salt[MBEDTLS_MD_MAX_SIZE];

??? unsigned int slen, hlen, offset = 0;

??? int ret;

??? size_t msb;

??? const mbedtls_md_info_t *md_info;

??? mbedtls_md_context_t md_ctx;

?

??? if(mode==MBEDTLS_RSA_PRIVATE&&ctx->padding != MBEDTLS_RSA_PKCS_V21 )

??????? return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA );

?

??? if( f_rng == NULL )

??????? return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA );

?

??? olen = ctx->len;

?

??? if( md_alg != MBEDTLS_MD_NONE )

??? {

??????? /* Gather length of hash to sign */

??????? md_info = mbedtls_md_info_from_type( md_alg );

??????? if( md_info == NULL )

??????????? return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA );

?

??????? hashlen = mbedtls_md_get_size( md_info );

??? }

?

??? md_info = mbedtls_md_info_from_type( (mbedtls_md_type_t) ctx->hash_id );

??? if( md_info == NULL )

??????? return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA );

?

??? hlen = mbedtls_md_get_size( md_info );

??? slen = hlen;

?

??? if( olen < hlen + slen + 2 )

??????? return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA );

?

??? memset( sig, 0, olen );

?

??? /* Generate salt of length slen */

??? if( ( ret = f_rng( p_rng, salt, slen ) ) != 0 )

??????? return( MBEDTLS_ERR_RSA_RNG_FAILED + ret );

?

??? /* Note: EMSA-PSS encoding is over the length of N - 1 bits */

??? msb = mbedtls_mpi_bitlen( &ctx->N ) - 1;

??? p += olen - hlen * 2 - 2;

??? *p++ = 0x01;

??? memcpy( p, salt, slen );

??? p += slen;

?

??? mbedtls_md_init( &md_ctx );

??? if( ( ret = mbedtls_md_setup( &md_ctx, md_info, 0 ) ) != 0 )

??????? goto exit;

?

??? /* Generate H = Hash( M' ) */

??? if( ( ret = mbedtls_md_starts( &md_ctx ) ) != 0 )

??????? goto exit;

??? if( ( ret = mbedtls_md_update( &md_ctx, p, 8 ) ) != 0 )

??????? goto exit;

??? if( ( ret = mbedtls_md_update( &md_ctx, hash, hashlen ) ) != 0 )

???????

goto exit;

??? if( ( ret = mbedtls_md_update( &md_ctx, salt, slen ) ) != 0 )

??????? goto exit;

??? if( ( ret = mbedtls_md_finish( &md_ctx, p ) ) != 0 )

??????? goto exit;

?

??? /* Compensate for boundary condition when applying mask */

??? if( msb % 8 == 0 )

??????? offset = 1;

?

??? /* maskedDB: Apply dbMask to DB */

??? if( ( ret = mgf_mask( sig + offset, olen - hlen - 1 - offset, p, hlen,

????????????????????????? &md_ctx ) ) != 0 )

??????? goto exit;

?

??? msb = mbedtls_mpi_bitlen( &ctx->N ) - 1;

??? sig[0] &= 0xFF >> ( olen * 8 - msb );

?

??? p += hlen;

??? *p++ = 0xBC;

?

???

mbedtls_zeroize( salt, sizeof( salt ) );

?

exit:

??? mbedtls_md_free( &md_ctx );

?

??? if( ret != 0 )

??????? return( ret );

?

??? return( ( mode == MBEDTLS_RSA_PUBLIC )

??????????? ? mbedtls_rsa_public(? ctx, sig, sig )

??????????? : mbedtls_rsa_private( ctx, f_rng, p_rng, sig, sig ) );

}

#endif /* MBEDTLS_PKCS1_V21 */

?

#if defined(MBEDTLS_PKCS1_V21)

/*

?* Implementation of the PKCS#1 v2.1 RSASSA-PSS-VERIFY function

?* RSASSA-PSS签名算法校验函数

?*/

int mbedtls_rsa_rsassa_pss_verify_ext( mbedtls_rsa_context *ctx,

?????????????????????????????? int (*f_rng)(void *, unsigned char *, size_t),

??????????

void *p_rng,

int mode,

mbedtls_md_type_t md_alg,

unsigned int hashlen,

const unsigned char *hash,

mbedtls_md_type_t mgf1_hash_id,

int expected_salt_len,

const unsigned char *sig )

{

int ret;

size_t siglen;

unsigned char *p;

unsigned char *hash_start;

unsigned char result[MBEDTLS_MD_MAX_SIZE];

unsigned char zeros[8];

unsigned int hlen;

size_t observed_salt_len, msb;

const mbedtls_md_info_t *md_info;

mbedtls_md_context_t md_ctx;

unsigned char buf[MBEDTLS_MPI_MAX_SIZE];

?

??

?if(mode==MBEDTLS_RSA_PRIVATE&&ctx->padding != MBEDTLS_RSA_PKCS_V21 )

return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA );

?

??? siglen = ctx->len;

?

??? if( siglen < 16 || siglen > sizeof( buf ) )

??????? return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA );

?

??? ret = ( mode == MBEDTLS_RSA_PUBLIC )

????????? ? mbedtls_rsa_public(? ctx, sig, buf )

?????? ???: mbedtls_rsa_private( ctx, f_rng, p_rng, sig, buf );

?

??? if( ret != 0 )

??????? return( ret );

?

??? p = buf;

?

??? if( buf[siglen - 1] != 0xBC )

??????? return( MBEDTLS_ERR_RSA_INVALID_PADDING );

?

??? if( md_alg != MBEDTLS_MD_NONE )

??

?{

??????? /* Gather length of hash to sign */

??????? md_info = mbedtls_md_info_from_type( md_alg );

??????? if( md_info == NULL )

??????????? return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA );

?

??????? hashlen = mbedtls_md_get_size( md_info );

??? }

?

??? md_info = mbedtls_md_info_from_type( mgf1_hash_id );

??? if( md_info == NULL )

??????? return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA );

?

??? hlen = mbedtls_md_get_size( md_info );

?

??? memset( zeros, 0, 8 );

?

??? /*

???? * Note: EMSA-PSS verification is over the length of N - 1 bits

???? */

??? msb = mbedtls_mpi_bitlen( &ctx->N ) - 1;

?

??? if( buf[0] >> ( 8 - siglen * 8 + msb ) )

??????? return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA );

?

??? /* Compensate for boundary condition when applying mask */

??? if( msb % 8 == 0 )

??? {

?? ?????p++;

??????? siglen -= 1;

??? }

?

??? if( siglen < hlen + 2 )

??????? return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA );

??? hash_start = p + siglen - hlen - 1;

?

??? mbedtls_md_init( &md_ctx );

??? if( ( ret = mbedtls_md_setup( &md_ctx, md_info, 0 ) ) != 0 )

??????? goto exit;

?

??? ret = mgf_mask( p, siglen - hlen - 1, hash_start, hlen, &md_ctx );

??? if( ret != 0 )

??????? goto exit;

?

??? buf[0] &= 0xFF >> ( siglen * 8 - msb );

?

??? while( p < hash_start - 1 && *p == 0 )

??????? p++;

?

??? if( *p++ != 0x01 )

??? {

??????? ret = MBEDTLS_ERR_RSA_INVALID_PADDING;

??????? goto exit;

??? }

?

??? observed_salt_len = hash_start - p;

?

??? if( expected_salt_len != MBEDTLS_RSA_SALT_LEN_ANY &&

??????? observed_salt_len != (size_t) expected_salt_len )

??? {

??????? ret = MBEDTLS_ERR_RSA_INVALID_PADDING;

??????? goto exit;

??? }

?

?

?

? /*

???? * Generate H = Hash( M' )

???? */

??? ret = mbedtls_md_starts( &md_ctx );

??? if ( ret != 0 )

??????? goto exit;

??? ret = mbedtls_md_update( &md_ctx, zeros, 8 );

??? if ( ret != 0 )

??????? goto exit;

??? ret = mbedtls_md_update( &md_ctx, hash, hashlen );

??? if ( ret != 0 )

??????? goto exit;

??? ret = mbedtls_md_update( &md_ctx, p, observed_salt_len );

??? if ( ret != 0 )

??????? goto exit;

??? ret = mbedtls_md_finish( &md_ctx, result );

??? if ( ret != 0 )

??????? goto exit;

?

??? if( memcmp( hash_start, result, hlen ) != 0 )

??? {

???????

ret = MBEDTLS_ERR_RSA_VERIFY_FAILED;

??????? goto exit;

??? }

?

exit:

??? mbedtls_md_free( &md_ctx );

?

??? return( ret );

}

?

/*

?* Simplified PKCS#1 v2.1 RSASSA-PSS-VERIFY function

?*/

int mbedtls_rsa_rsassa_pss_verify( mbedtls_rsa_context *ctx,

?????????????????????????? int (*f_rng)(void *, unsigned char *, size_t),

?????????????????????????? void *p_rng,

??????????????????????? ???int mode,

?????????????????????????? mbedtls_md_type_t md_alg,

?????????????????????????? unsigned int hashlen,

?????????????????????????? const unsigned char *hash,

?????????????????????????? const unsigned char *sig )

?

{

??? mbedtls_md_type_t mgf1_hash_id = ( ctx->hash_id != MBEDTLS_MD_NONE )

???????????????????????????? ? (mbedtls_md_type_t) ctx->hash_id

???????????????????????????? : md_alg;

?

??? return( mbedtls_rsa_rsassa_pss_verify_ext( ctx, f_rng, p_rng, mode,

???????????????????????????????????? ??md_alg, hashlen, hash,

?????????????????????????????????????? mgf1_hash_id, MBEDTLS_RSA_SALT_LEN_ANY,

?????????????????????????????????????? sig ) );

?

}

#endif /* MBEDTLS_PKCS1_V21 */

收藏 人收藏
分享:

评论

相关推荐

关于串口下载程序

关于串口下载程序,结合STM32参考手册和自己的理解,得到下面的内容。发帖,若有理解不对的地方,希望大家帮忙指出来,共同学...

发表于 12-13 17:07 ? 45次 阅读
关于串口下载程序

STM32学习第8天--关于GPIO口的输出方式

[table] [tr][td]这几天操作了GPIO,但是对GPIO的输出方式仍然不是很理解!瞬间觉得自己的模电都还给我们可爱的模电老师...

发表于 12-13 17:06 ? 46次 阅读
STM32学习第8天--关于GPIO口的输出方式

嵌入式Linux开发教程之嵌入式Linux应用开发手册资料免费下载

本书全面介绍了嵌入式Linux系统开发过程中,从底层系统支持到上层GUI应用的方方面面,内容涵盖Li....

发表于 12-13 16:46 ? 9次 阅读
嵌入式Linux开发教程之嵌入式Linux应用开发手册资料免费下载

串口屏开发资料分享【转载】感觉不错的资料

我感觉不错   对于我来讲很有用    ...

发表于 12-13 16:34 ? 66次 阅读
串口屏开发资料分享【转载】感觉不错的资料

SST联手SK hynix system ic 为设计人员提供低功耗嵌入式闪存解决方案

2018年12月13日,越来越多的集成电路(IC)设计人员希望找到方法,在实施低功耗、高耐用嵌入式闪....

发表于 12-13 15:43 ? 18次 阅读
SST联手SK hynix system ic 为设计人员提供低功耗嵌入式闪存解决方案

意法半导体公布了汽车微控制器嵌入式PCM样片的架构和性能基准

2018年12月12日,横跨多重电子应用领域的全球领先的半导体供应商意法半导体(STMicroele....

发表于 12-13 15:38 ? 20次 阅读
意法半导体公布了汽车微控制器嵌入式PCM样片的架构和性能基准

基于SSP接口的触摸屏软硬件系统设计

引  言 嵌入式系统触摸屏的应用越来越广泛,诸如以PDA为标志的数码产品和工业领域中使用的大量仪器仪表都逐渐选...

发表于 12-13 09:46 ? 19次 阅读
基于SSP接口的触摸屏软硬件系统设计

嵌入式开发为什么选择C语言

1.从语言特点来说: ①C语言有出色的可移植性,能在多种不同体系结构的软/硬平台上运行 ②简洁紧凑,使用灵活的语法机制,并...

发表于 12-13 09:31 ? 30次 阅读
嵌入式开发为什么选择C语言

ARM学习建议

节?。夯逶都? ARM培训之初学者,作为ARM的初学者,对相关的基本概念应该都非常了解,但对于小编提出的这些基本问题...

发表于 12-12 17:11 ? 409次 阅读
ARM学习建议

Linux 如何快速上手

作为一个学习嵌入式单片机的小渣渣,我觉得linux是必须要学习的,除非是做纯裸机开发的,要不然早晚都要学...

发表于 12-12 16:56 ? 90次 阅读
Linux 如何快速上手

深入探析嵌入式系统的发展前景

随着工业4.0、医疗电子、智能家居、物流管理和电力控制等快速的发展和推进,嵌入式系统利用自身的技术特....

的头像 PCB开门网 发表于 12-12 16:35 ? 212次 阅读
深入探析嵌入式系统的发展前景

win10嵌入式平板电脑在数控设备领域应用

数控设备的广泛应用已成为现代机械工业发展的趋势,在传统的数控系统应用中,联网、高精度、高速度的数控技术要求,已然是精密机...

发表于 12-12 14:12 ? 48次 阅读
win10嵌入式平板电脑在数控设备领域应用

linux嵌入式编程开发必备知识,这些你都要知道 | 外赠C语言相关电子书

在技术迅猛发展的今天,嵌入式成为现在最热门的IT技术之一,对于嵌入式来说,学习嵌入式最重要的就是嵌入式linux系统了,这是嵌...

发表于 12-12 10:18 ? 73次 阅读
linux嵌入式编程开发必备知识,这些你都要知道 | 外赠C语言相关电子书

适合新人选用的嵌入式开发板

对于新手而言在选择开发板的时候一定要根据自己的实际情况来选择,同时还应该选择以下功能比较完善的开发板?! 【湍壳暗氖谐∏?..

发表于 12-12 09:48 ? 113次 阅读
适合新人选用的嵌入式开发板

华北工控推出面向语音识别系统打造的一款高性能嵌入式板卡方案

通过语音信号处理和模式识别让机器自动识别和理解人类口述语言,让机器通过识别和理解过程把语音信号转变为....

发表于 12-11 16:42 ? 68次 阅读
华北工控推出面向语音识别系统打造的一款高性能嵌入式板卡方案

从裸奔到操作系统将面对什么挑战

嵌入式设备网络化、u盘化、功能复杂化的趋势,使越来越多的、过去可以用裸奔实现的嵌入式产品,产生了应用....

的头像 玩转单片机 发表于 12-11 15:45 ? 142次 阅读
从裸奔到操作系统将面对什么挑战

西门子推出以嵌入式工控机为基础的边缘应用硬件平台

继云计算、大数据和人工智能这些热词之后,边缘计算也在近年成为了业界关注的焦点。

的头像 工控头条 发表于 12-11 14:22 ? 184次 阅读
西门子推出以嵌入式工控机为基础的边缘应用硬件平台

嵌入式ARM开发环境搭建解析

1. 安装,配置,启动FTP服务· 安装FTP: sudo apt-get install vsft....

的头像 嵌入式ARM 发表于 12-11 14:02 ? 211次 阅读
嵌入式ARM开发环境搭建解析

探讨嵌入式系统的发展前景

随着工业4.0、医疗电子、智能家居、物流管理和电力控制等快速的发展和推进,嵌入式系统利用自身的技术特....

的头像 OFweek工控 发表于 12-09 11:05 ? 610次 阅读
探讨嵌入式系统的发展前景

嵌入式开发是什么

嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有WinCE,ucos,vxworks,l....

的头像 发烧友学院 发表于 12-08 10:12 ? 317次 阅读
嵌入式开发是什么

嵌入式教程之Linux的基础命令详细资料说明

本文档的主要内容详细介绍的是嵌入式教程之Linux的基础命令详细资料说明主要内容包括了:1.Linu....

发表于 12-06 17:31 ? 40次 阅读
嵌入式教程之Linux的基础命令详细资料说明

Imagination发布最新神经网络加速器

Imagination Technologies宣布推出其面向人工智能(AI)应用的最新神经网络加速....

的头像 Imagination Tech 发表于 12-06 16:09 ? 283次 阅读
Imagination发布最新神经网络加速器

以μC OS-III为例的嵌入式实时操作系统概述

本文档的主要内容详细介绍的是以μC OS-III为例的嵌入式实时操作系统概述主要内容包括了:一. 任....

发表于 12-06 16:06 ? 43次 阅读
以μC OS-III为例的嵌入式实时操作系统概述

安防工程在偏远地区的全面建设之路 依旧需要因地制宜

目前,2018首届西藏安防展研讨会在拉萨举行,针对偏远地区智能安防建设进行了多方位的讨论。在全国智慧....

发表于 12-05 10:13 ? 254次 阅读
安防工程在偏远地区的全面建设之路 依旧需要因地制宜

探析嵌入式系统在IoT产业中的应用

嵌入式系统在IoT产业中非常重要,那么它在产业中是一种怎样的存在,本文主要阐述它在IoT的作用和特点....

的头像 物联网技术 发表于 12-04 14:04 ? 242次 阅读
探析嵌入式系统在IoT产业中的应用

电子专业嵌入式系统课程体系研究分析

随着嵌入式技术的迅猛发展, 学生分析、解决嵌入式实际应用问题的能力亟待提高。本文根据嵌入式系统知识体....

发表于 12-03 14:51 ? 48次 阅读
电子专业嵌入式系统课程体系研究分析

DSP教程之DSP中文版速成教程和DSP的汇编实验程序速学教程免费下载

本用户指南是TMS320F28335 嵌入式DSP 控制模板硬件使用说明书,详细描述了SEED-DE....

发表于 12-03 08:00 ? 62次 阅读
DSP教程之DSP中文版速成教程和DSP的汇编实验程序速学教程免费下载

嵌入式应用框架EAF详解

EAF是Embedded Application Framework 的缩写,即嵌入式应用框架。嵌入....

发表于 12-02 11:30 ? 136次 阅读
嵌入式应用框架EAF详解

基于微处理器S3C2440和WinCE嵌入式实时操作系统的视频数据采集

CMOS图像传感器及其接口电路用于采集视频数据。LCD与触摸屏构成人机交互???,起到数据交互的作用,....

发表于 12-02 11:18 ? 141次 阅读
基于微处理器S3C2440和WinCE嵌入式实时操作系统的视频数据采集

研华全面布局AIoT 赋能全球物联网产业链

万物互联时代,边缘计算、人工智能、大数据分析等技术深度融合,成为各行业数字化转型的关键。为凝聚产业力....

的头像 DIGITIMES 发表于 11-30 17:22 ? 604次 阅读
研华全面布局AIoT 赋能全球物联网产业链

UltraFast嵌入式方法检查表介绍及使用方法

UltraFast嵌入式方法检查表介绍,解释清单的功能以及如何使用它。

的头像 Xilinx视频 发表于 11-30 06:45 ? 109次 观看
UltraFast嵌入式方法检查表介绍及使用方法

Matrix多重HLS IP和DAVE Bora套件的展示

DAVE嵌入式系统在嵌入式世界2015中展示了Matrix多重HLS IP和DAVE Bora套件

的头像 Xilinx视频 发表于 11-30 06:43 ? 169次 观看
Matrix多重HLS IP和DAVE Bora套件的展示

使用iVeia视觉套件进行Canny边缘检测HLS IP

iVeia使用嵌入式世界2015中的iVeia视觉套件演示了Canny边缘检测HLS IP

的头像 Xilinx视频 发表于 11-30 06:41 ? 130次 观看
使用iVeia视觉套件进行Canny边缘检测HLS IP

首发:周立功教授《嵌入式软件工程方法与实践丛书》在北航正式出版开售

11月24日,由周立功教授主导撰写的《嵌入式软件工程方法与实践丛书》前三本,共计200万字,在全国嵌....

的头像 人间烟火123 发表于 11-28 16:41 ? 2723次 阅读
首发:周立功教授《嵌入式软件工程方法与实践丛书》在北航正式出版开售

单片机电路设计中的10个难点

单片机是嵌入式系统的核心元件,使用单片机的电路要复杂得多,但在更改和添加新功能时,带有单片机的电路更....

的头像 玩转单片机 发表于 11-28 15:44 ? 540次 阅读
单片机电路设计中的10个难点

嵌入式视觉和工业物联网的亮点

观看Xilinx客户如何将All Programmable技术集成到最新的嵌入式视觉和工业物联网应用....

的头像 Xilinx视频 发表于 11-28 06:43 ? 139次 观看
嵌入式视觉和工业物联网的亮点

Aaware远场语音开发平台的基本介绍

该开发平台提供一个可配置的麦克风阵列(多达13个麦克风),业界一流的声音捕捉和一个完整的Ubuntu....

的头像 Xilinx视频 发表于 11-28 06:08 ? 125次 观看
Aaware远场语音开发平台的基本介绍

人工智能应用场景越来越多 逐渐成为各个行业的必备技能

从2015年开始,人工智能概念从提出伊始就受到市场的高度重视,从无人商店到智慧金融,从智慧物流到智能....

发表于 11-27 17:12 ? 946次 阅读
人工智能应用场景越来越多 逐渐成为各个行业的必备技能

华北工控嵌入式计算机硬件方案在无人零售超市中的应用浅析

“无人”概念在各项智能技术层出不穷的背景下,得到越来越全面的推广。不论是无人零售实体店,还是无人售货....

发表于 11-27 17:05 ? 442次 阅读
华北工控嵌入式计算机硬件方案在无人零售超市中的应用浅析

华北工控环境检测嵌入式硬件系统产品方案浅析

与其他行业相比,化工行业本身所具备的易爆、易燃、腐蚀性等特点使其在安全防范上更具有挑战性,其中涉及到....

发表于 11-27 16:58 ? 222次 阅读
华北工控环境检测嵌入式硬件系统产品方案浅析

嵌入式是否是一个大坑呢?嵌入式软硬件开发都是坑?

这是一个与毕业一年的初级工程师的对话,他来自二线城市,通过加班抗住现有的工作。一个问题调试好几年确不....

的头像 嵌入式ARM 发表于 11-27 16:35 ? 474次 阅读
嵌入式是否是一个大坑呢?嵌入式软硬件开发都是坑?

将DSP设计融入嵌入式系统的AXI4-Lite接口

了解System Generator如何提供AXI4-Lite抽象,从而可以将DSP设计融入嵌入式系....

的头像 Xilinx视频 发表于 11-27 07:24 ? 176次 观看
将DSP设计融入嵌入式系统的AXI4-Lite接口

Airbus智能工具的演示

嵌入式产品产品经理Eric Myers使用NI系统??椋⊿OM)演示了Airbus智能工具概念,用于....

的头像 Xilinx视频 发表于 11-27 07:05 ? 118次 观看
Airbus智能工具的演示

Xilinx Zynq UltraScale+ MPSoC的同步调试和跟踪演示

Lauterbach演示了Zynq UltraScale + MPSoC上的ARM Cortex-A....

的头像 Xilinx视频 发表于 11-27 06:48 ? 147次 观看
Xilinx Zynq UltraScale+ MPSoC的同步调试和跟踪演示

Mentor嵌入式多核架构的展示

Mentor嵌入式多核架构允许在Zynq UltraScale + MPSoC上的两个ARM Cor....

的头像 Xilinx视频 发表于 11-27 06:44 ? 181次 观看
Mentor嵌入式多核架构的展示

几个嵌入式硬件设计时特别要注意的问题

并不是所有的总线信号都要上拉。上下拉电阻也有功耗问题需要考虑。上下拉电阻拉一个单纯的输入信号,电流也....

的头像 玩转单片机 发表于 11-26 16:05 ? 454次 阅读
几个嵌入式硬件设计时特别要注意的问题

7个易操作且可以长久使用的嵌入式开发技巧

软件开发人员往往都是非常乐观的一群人,只要让他们的代码忠实地长时间地运行就可以了,仅此而已。

的头像 嵌入式资讯精选 发表于 11-26 15:37 ? 327次 阅读
7个易操作且可以长久使用的嵌入式开发技巧

如何在嵌入式Linux中使用GPIO

了解如何在嵌入式Linux中使用GPIO,特别强调Zynq-7000系列。 我们介绍了基本的用户和....

的头像 Xilinx视频 发表于 11-26 07:02 ? 151次 观看
如何在嵌入式Linux中使用GPIO

Zynq的新产品PCI-Express板及医疗解决方案的展示

Xilinx卓越联盟计划成员主题嵌入式产品推出新的佛罗里达PCI-Express板,支持两个基于Zy....

的头像 Xilinx视频 发表于 11-26 06:55 ? 163次 观看
Zynq的新产品PCI-Express板及医疗解决方案的展示

linx Spartan-6 LX9 MicroBoard的讨论介绍

介绍这款低成本,紧凑的评估板,完整且可随时开发。

的头像 Xilinx视频 发表于 11-26 06:20 ? 162次 观看
linx Spartan-6 LX9 MicroBoard的讨论介绍

可编程逻辑与Visual Applets相结合的硅软件介绍

这款用于智能电台的嵌入式计算机视觉演示通过将Zynq All Programmable SoC中的可....

的头像 Xilinx视频 发表于 11-26 06:15 ? 205次 观看
可编程逻辑与Visual Applets相结合的硅软件介绍

康佳携嵌入式计算机和嵌入式视觉技术融合的嵌入式视觉平台惊艳亮相

德国康佳特科技在2018德国慕尼黑电子展(Electronica)中亮相嵌入式计算机和嵌入式视觉技术....

发表于 11-25 11:38 ? 301次 阅读
康佳携嵌入式计算机和嵌入式视觉技术融合的嵌入式视觉平台惊艳亮相

混合系统集成了嵌入式HMI和基于云的软件服务

人机界面可以汇集数据,并与云协同工作,从而可以提供强大、可扩展、低成本的方式来收集和分发工业设施数据....

发表于 11-23 17:04 ? 922次 阅读
混合系统集成了嵌入式HMI和基于云的软件服务

全球最小的嵌入式RAID1解决方案亮相 主要针对小型工业与嵌入式系统

随着工控与各种嵌入式计算系统的体积越来越小,存储设备亦进一步小型化,2.5英寸SATA、mSATA及....

发表于 11-23 16:46 ? 156次 阅读
全球最小的嵌入式RAID1解决方案亮相 主要针对小型工业与嵌入式系统

基于人工智能神经网络的嵌入式机器学习

人工智能的火爆,也带旺了许多新名词,比如“机器学习”。

的头像 安富利 发表于 11-23 10:23 ? 678次 阅读
基于人工智能神经网络的嵌入式机器学习

嵌入式Linux工程师需要了解的八大开发知识点

嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,....

的头像 MCU开发加油站 发表于 11-22 16:14 ? 382次 阅读
嵌入式Linux工程师需要了解的八大开发知识点

西部数据发布智能终端的数据存储 视频监控领域的端到端智能方案形成

近日,西部数据公司发布了全新的三个监控存储解决方案,包括应用于监控的工业级3D NAND UFS嵌入....

发表于 11-22 14:55 ? 277次 阅读
西部数据发布智能终端的数据存储 视频监控领域的端到端智能方案形成

Spartan-6 FPGA嵌入式套件的功能特性演示

了解新的Spartan?-6 FPGA嵌入式套件如何使您能够使用低成本的Spartan-6 FPGA....

的头像 Xilinx视频 发表于 11-22 06:37 ? 322次 观看
Spartan-6 FPGA嵌入式套件的功能特性演示

嵌入式视觉的最新趋势讨论

Xilinx嵌入式视觉战略营销总监Aaron Behman讨论了嵌入式视觉的最新趋势以及Xilinx....

的头像 Xilinx视频 发表于 11-22 06:31 ? 255次 观看
嵌入式视觉的最新趋势讨论

详细解析嵌入式LCD的接口分类

LCD的接口有多种,分类很细。主要看LCD的驱动方式和控制方式,目前手机上的彩色LCD的连接方式一般....

的头像 玩转单片机 发表于 11-21 16:22 ? 453次 阅读
详细解析嵌入式LCD的接口分类

  • 池莉:她构建了一座叫“生活”的城 2018-12-13
  • GreatNews The Intelligent RSS Reader 2018-12-13
  • 909| 51| 248| 276| 176| 107| 615| 846| 900| 810|