資料介紹
軟件簡(jiǎn)介
RT-Thread 官方推出了 STM32 系列單片機(jī)的通用 bootloader, 在其網(wǎng)站可以通過(guò)網(wǎng)頁(yè)配置就可以生成 bootloader 的燒錄文件,使廣大嵌入式工程師不用編寫(xiě)一行代碼,就能夠輕松完成自己產(chǎn)品的 bootloader 功能。但是由于 RTT 官方的 bootloader 軟件?RT-OTA?是商用性質(zhì),不公開(kāi)源碼,不僅僅限制了在其他平臺(tái)的移植,而且也不方便加入產(chǎn)品的特定功能。本人軟件水平有限,但是基于對(duì)開(kāi)源精神的崇拜和 RTT 多年的感情,蒙發(fā)出利用業(yè)余時(shí)間編寫(xiě)一款開(kāi)源的且基于 RTT 系統(tǒng) bootloader 通用軟件,貢獻(xiàn)給大家。
由于 RTT 官方推出的 bootloader 名字叫 RT-OTA,因此為了蹭點(diǎn) RTT 的流量,我這個(gè) bootloader 名字就叫 RT-FOTA。
【RT-FOTA 的需求分析】
-
開(kāi)發(fā)基于 RTOS 的 bootloader 軟件,網(wǎng)上很多牛人會(huì)說(shuō) bootloader 最好是裸機(jī)程序編寫(xiě),就像 u-boot 一樣穩(wěn)定和可靠。但我個(gè)人認(rèn)為目前 32 位單片機(jī)資源豐富,RT-Thread 的穩(wěn)定和可靠性不言而喻,加之 RTT 的組件豐富,后續(xù)功能拓展方便(比如加入網(wǎng)絡(luò)和 USB 功能)。因此我使用 RT-Thread 的閹割版本 rtt-nano 實(shí)現(xiàn)。
-
兼容 RTT 官方的 rbl 文件:使用 RTT 官方的打包軟件生成下載文件,可以實(shí)現(xiàn)加密壓縮功能。由于個(gè)人水平問(wèn)題,只能做到盡可能的兼容,比如 RBL 文件里面的 HASH_CODE 我就不知道怎么計(jì)算出來(lái)的。
-
移植方便:由于 RT-FOTA 基于 RT-Thread 開(kāi)發(fā),因此只要你的平臺(tái)被 RT-Thread 支持,就可以很方便的移植到。
【RT-FOTA 主要的功能】
- 支持 RTT 官方的 RBL 打包軟件,使用方式也一致。目前支持包括 CRC32、AES256、quicklz 和 fastlz 功能;
- 支持命令行模式(FINSH 組件)和出廠固件恢復(fù);
- 支持 FLASH 分區(qū)(FAL 組件);
- 支持功能擴(kuò)展(RTT 組件);
- 其他功能可自行方便擴(kuò)展;
軟件開(kāi)發(fā)目錄
軟件開(kāi)發(fā)目錄參照 RTT 的目錄形式,如下圖所示:
我原本計(jì)劃添加 SCONS 進(jìn)行編譯,但目前對(duì) SCONS 的使用還不熟悉,下次再實(shí)現(xiàn),因此暫時(shí)使用?MDK?完成。
可以看到我并未按照 RTT 官方推薦的使用 MDK 或 cube 生成 rtt-nano 的工程,原因是我有強(qiáng)迫癥,感覺(jué) IDE 生成的目錄很不爽。
軟件配置說(shuō)明
RT-FOTA 的軟件配置仍然集中在 rtconfig.h 中,其中一些. c 文件中有一些默認(rèn)的配置宏,但可以根據(jù)需求進(jìn)行修改。
/* RT-Thread config file */ #ifndef RT_CONFIG_H__ #define RT_CONFIG_H__ #define RT_THREAD_PRIORITY_MAX 8 #define RT_TICK_PER_SECOND 1000 #define RT_ALIGN_SIZE 4 #define RT_NAME_MAX 8 /* Kernel Device Object */ #define RT_USING_DEVICE #define RT_USING_CONSOLE #define RT_CONSOLEBUF_SIZE 512 #define RT_CONSOLE_DEVICE_NAME "uart1" #define RT_VER_NUM 0x30102 #define RT_USING_CPU_FFS /* RT-Thread Components */ #define RT_USING_COMPONENTS_INIT #define RT_USING_USER_MAIN #define RT_DEBUG_INIT 0 #define RT_USING_OVERFLOW_CHECK // #define RT_USING_HOOK // #define RT_USING_IDLE_HOOK /* Software timers Configuration */ #define RT_USING_TIMER_SOFT 0 #if RT_USING_TIMER_SOFT == 0 #undef RT_USING_TIMER_SOFT #endif #define RT_TIMER_THREAD_PRIO 4 #define RT_TIMER_THREAD_STACK_SIZE 512 #define RT_TIMER_TICK_PER_SECOND 100 /* IPC(Inter-process communication) Configuration */ #define RT_USING_SEMAPHORE #define RT_USING_MUTEX //#define RT_USING_EVENT //#define RT_USING_MAILBOX //#define RT_USING_MESSAGEQUEUE /* Memory Management Configuration */ #define RT_USING_HEAP #define RT_USING_MEMHEAP #define RT_USING_SMALL_MEM /* Finsh Configuration */ #define RT_USING_FINSH #define FINSH_USING_MSH #define FINSH_USING_MSH_ONLY #define __FINSH_THREAD_PRIORITY 5 #define FINSH_THREAD_PRIORITY (RT_THREAD_PRIORITY_MAX / 8 * __FINSH_THREAD_PRIORITY + 1) #define FINSH_THREAD_STACK_SIZE 2048 #define FINSH_USING_HISTORY #define FINSH_HISTORY_LINES 5 #define FINSH_USING_SYMTAB #define FINSH_USING_AUTH /* 可配置 FINSH 的 authencation 功能, 防止隨意使用 FINSH */ #define FINSH_DEFAULT_PASSWORD "radiation" #define FINSH_PASSWORD_MIN 6 #define FINSH_PASSWORD_MAX 16 /* Device Drivers */ #define RT_USING_PIN #define RT_USING_SERIAL // #define RT_SERIAL_USING_DMA #define RT_USING_RTC #define RT_USING_SPI #define RT_USING_SFUD #define RT_SFUD_USING_SFDP #define RT_SFUD_USING_FLASH_INFO_TABLE #define RT_USING_WDT /* RTT 組件配置 */ /* fal package */ #define PKG_USING_FAL #define FAL_DEBUG_CONFIG #define FAL_DEBUG 0 #define FAL_PART_HAS_TABLE_CFG #define FAL_USING_SFUD_PORT #define FAL_USING_NOR_FLASH_DEV_NAME "nor_flash0" #define PKG_USING_FAL_LATEST_VERSION #define PKG_FAL_VER_NUM 0x99999 /* Tinycrypt package */ #define TINY_CRYPT_AES /* Compress package */ #define QLZ_COMPRESSION_LEVEL 3 /* Hardware Drivers Config */ #define SOC_FAMILY_STM32 #define SOC_SERIES_STM32F4 #define SOC_STM32F407ZE /* On-chip Peripheral Drivers */ #define BSP_USING_GPIO #define BSP_USING_ON_CHIP_FLASH #define BSP_USING_ONCHIP_RTC #define BSP_USING_UART #define BSP_USING_UART1 #define BSP_USING_SPI #define BSP_USING_SPI1 /* Onboard Peripheral Drivers */ #define BSP_DATAFALSH_CS_PIN 30 /* Board extended module Drivers */ #define BSP_RS485_DIR_PIN 52 /* RT-FOTA module define */ #define RT_FOTA_SW_VERSION "1.0.0" /* Enable Ymodem OTA */ #define PKG_USING_YMODEM_OTA /* 分區(qū)名字可以根據(jù)自己的需求而定 */ /* FOTA application partition name */ #ifndef RT_FOTA_APP_PART_NAME #define RT_FOTA_APP_PART_NAME "app" #endif /* FOTA download partition name */ #ifndef RT_FOTA_FM_PART_NAME #define RT_FOTA_FM_PART_NAME "fm_area" #endif /* FOTA default partition name */ #ifndef RT_FOTA_DF_PART_NAME #define RT_FOTA_DF_PART_NAME "df_area" #endif /* 此兩項(xiàng)密碼必須與 RTT 的打包軟件設(shè)置一致 */ /* AES256 encryption algorithm option */ #define RT_FOTA_ALGO_AES_IV "0123456789ABCDEF" #define RT_FOTA_ALGO_AES_KEY "0123456789ABCDEF0123456789ABCDEF" #endif
RBL 文件說(shuō)明
使用過(guò) RTT 官方的 RT-OTA 組件的朋友都知道,下載的不是 bin 文件,而是需要通過(guò) RTT 打包軟件 “裝飾” 成 rbl 文件之后,才能被 RT-OTA 識(shí)別。
RTT 的打包軟件可以設(shè)置代碼加密和壓縮,其配置信息都存在 rbl 文件前 96 字節(jié)中:
rt-fota />fota show fm_area 0 96 00000000: 52 42 4C 00 00 02 00 00 5E A9 A4 5D 61 70 70 00 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 31 2E 30 2E 00000020: 36 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000030: 00 00 00 00 31 2E 30 2E 36 00 00 00 00 00 00 00 00000040: 00 00 00 00 00 00 00 00 00 00 00 00 43 33 29 0A 00000050: 47 08 F6 DA 84 BB 00 00 1C 84 00 00 C4 3D E3 B5
其具體含義如下:
typedef struct { char type[4]; /* RBL 字符頭 */ rt_uint16_t fota_algo; /* 算法配置: 表示是否加密或者使用了壓縮算法 */ rt_uint8_t fm_time[6]; /* 原始 bin 文件的時(shí)間戳, 6 位時(shí)間戳, 使用了 4 字節(jié), 包含年月日信息 */ char app_part_name[16]; /* app 執(zhí)行分區(qū)名 */ char download_version[24]; /* 固件代碼版本號(hào) */ char current_version[24]; /* 這個(gè)域在 rbl 文件生成時(shí)都是一樣的,我用于表示 app 分區(qū)當(dāng)前運(yùn)行固件的版本號(hào),判斷是否固件需要升級(jí) */ rt_uint32_t code_crc; /* 代碼的 CRC32 校驗(yàn)值, 它是的打包后的校驗(yàn)值, 即 rbl 文件 96 字節(jié)后的數(shù)據(jù) */ rt_uint32_t hash_val; /* 估計(jì)這個(gè)域是指的原始代碼本身的校驗(yàn)值,但不知道算法,無(wú)法確認(rèn),故在程序中未使用 */ rt_uint32_t raw_size; /* 原始代碼的大小 */ rt_uint32_t com_size; /* 打包代碼的大小 */ rt_uint32_t head_crc; /* rbl 文件頭的 CRC32 校驗(yàn)值,即 rbl 文件的前 96 字節(jié) */ } rt_fota_part_head, *rt_fota_part_head_t;
開(kāi)機(jī)界面
RT-FOTA 開(kāi)機(jī)界面如下圖:
可以看出使用了 RTT 的 SFUD 和 FAL 組件,同時(shí)列出了分區(qū)變信息。
RT-FOTA 源碼公開(kāi),你想怎么改就怎么改, 不在受限制:)
最后一行是表示在 5 秒鐘內(nèi),按下 Enter 鍵,即 0x0d,就可以進(jìn)入命令行模式:
由于 FINSH 具備 authencation 功能,可以設(shè)置 shell 密碼。具體詳見(jiàn) RTT 相關(guān)文檔。
命令行模式
RT-FOTA 的命令行模式使用的 RTT 的 FINSH 組件, 除了 RTT 系統(tǒng)自帶命令外,還增加 fota 和 ymdown 命令:
**fota 命令 **
鍵入 fota 命令后回車(chē)即可看到幫助命令:
rt-fota />fota Usage: fota probe - probe RBL file of partiton fota show partition addr size - show 'size' bytes starting at 'addr' fota clone des_part src_part - clone src partition to des partiton fota exec - execute application program
probe 參數(shù)可以打印出當(dāng)分區(qū)的 RBL 信息:
rt-fota />fota probe [I/fota] ===== RBL of fm_area partition ===== [I/fota] | App partition name | app | [I/fota] | Algorithm mode | AES && QLZ | [I/fota] | Firmware version | 1.0.3 | [I/fota] | Code raw size | 48004 | [I/fota] | Code package size | 33824 | [I/fota] | Build Timestamp | 1571072350 | [I/fota] ===== RBL of df_area partition ===== [I/fota] | App partition name | app | [I/fota] | Algorithm mode | AES && QLZ | [I/fota] | Firmware version | 1.0.3 | [I/fota] | Code raw size | 48004 | [I/fota] | Code package size | 33824 | [I/fota] | Build Timestamp | 1571072350 |
這里列出了 fm_area 和 df_area 分區(qū)中 RBL 文件的主要信息項(xiàng), 便于開(kāi)發(fā)者查詢(xún):
App partition name: 指的是 RTT 打包文件時(shí)設(shè)置的分區(qū)名
Algorithm mode?: 指的是 RTT 打包文件使用那些算法:AES256/Quicklz/Fastlz
Firmware version?: 指的是 RTT 打包文件設(shè)置的固件版本號(hào)
Code raw size?: 指的代碼原始大小
Code package size?: 指的代碼打包后的大小
Build Timestamp?: 指的代碼生成的時(shí)間戳
show 參數(shù)可以顯示分區(qū)的具體實(shí)際數(shù)據(jù),方便調(diào)試與檢查:
rt-fota />fota show app 0 96 00000000: C0 08 00 20 E5 57 02 08 5D 04 02 08 5F 04 02 08 00000010: 63 04 02 08 67 04 02 08 6B 04 02 08 00 00 00 00 00000020: 00 00 00 00 00 00 00 00 00 00 00 00 6F 04 02 08 00000030: 71 04 02 08 00 00 00 00 73 04 02 08 75 04 02 08 00000040: FF 57 02 08 FF 57 02 08 FF 57 02 08 49 55 02 08 00000050: FF 57 02 08 FF 57 02 08 FF 57 02 08 FF 57 02 08
這里列出了 app 分區(qū) 0 到 96 字節(jié)的數(shù)據(jù)
**clone 參數(shù)是實(shí)現(xiàn)分區(qū)數(shù)據(jù)克隆 **
rt-fota />fota clone fm_area df_area Clone df_area partition to fm_area partition: ######################################################### ######################################################### ######################################################### ######################################################### ############################ Clone partition success, total 1048576 bytes!
這里是將 df _ area 分區(qū)數(shù)據(jù)完整的克隆島 fm _ area 中。
**exec 參數(shù)是用于執(zhí)行 app 分區(qū)的應(yīng)用代碼 **
rt-fota />fota exec [I/fota] Implement application now. LCD ID:5510
**ymdown 命令 **
ymdown?是基于 Ymodem 協(xié)議的下載命令,使用 RTT 的 ymodem 和 ymodem _ ota 組件實(shí)現(xiàn),其中將 ymodem _ ota.c 中的?DEFAULT_DOWNLOAD_PART?設(shè)置為需要默認(rèn)使用分區(qū)名,即在使用?ymdown?不帶參數(shù)的情況下就下載到?DEFAULT_DOWNLOAD_PART?分區(qū),也可加分區(qū)名作為參數(shù)指定下載位置。
rt-fota />ymdown Default save firmware on download partition. Warning: Ymodem has started! This operator will not recovery. Please select the ota firmware file and use Ymodem to send. CCCCCC Starting ymodem transfer. Press Ctrl+C to cancel. 100% 33 KB 6 KB/s 00:00:05 0 Errors Download firmware to flash success. Download firmware verify........[OK] Reset system and apply new firmware.
下載完成后,會(huì)自動(dòng)復(fù)位重新啟動(dòng),將新固件搬運(yùn)到 app 分區(qū)中:
____ _____ _____ ___ _____ _ | _ \_ _| | ___/ _ \ _ _|/ \ | |_) || |_____ | |_ || || | | / _ \ | _ < | |_____ | _| ||_|| | |/ ___ \ |_| \_\|_| |_| \___/ |_/_/ \_\ 2016 - 2019 Copyright by Radiation @ warfalcon Version: 1.0.0 build Oct 18 2019 [SFUD] Find a Winbond flash chip. Size is 16777216 bytes. [SFUD] nor_flash0 flash device is initialize success. [I/FAL] ==================== FAL partition table ==================== [I/FAL] | name | flash_dev | offset | length | [I/FAL] ------------------------------------------------------------- [I/FAL] | app | onchip_flash | 0x00020000 | 0x000e0000 | [I/FAL] | fm_area | nor_flash0 | 0x00000000 | 0x00100000 | [I/FAL] | df_area | nor_flash0 | 0x00100000 | 0x00100000 | [I/FAL] ============================================================= [I/FAL] RT-Thread Flash Abstraction Layer (V0.4.0) initialize success. Please press [Enter] key into shell mode in 5 secs: [I/fota] Partition[app] erase start: [I/fota] Start to copy firmware from fm_area to app partition: ############ [I/fota] Upgrade success, total 48004 bytes. [I/fota] Copy firmware version Success! [I/fota] Implement application now. LCD ID:5510
出廠固件恢復(fù)
恢復(fù)出廠固件的方式比較多,本人多年的工程實(shí)踐經(jīng)驗(yàn),傾向于使用外部按鍵長(zhǎng)按后進(jìn)行出廠固件恢復(fù)。出廠固件存儲(chǔ)在 df _ area 分區(qū)中(分區(qū)名在代碼中任意設(shè)置),長(zhǎng)按按鍵 10s 后 (長(zhǎng)按時(shí)間在代碼中任意設(shè)置),RT-FOTA 會(huì)自動(dòng)解密解壓 df _ area 分區(qū)代碼,并搬運(yùn)到 app 分區(qū)進(jìn)行執(zhí)行。
Default firmware key pressed: >>>>>>>>>> [I/fota] Partition[app] erase start: [I/fota] Start to copy firmware from df_area to app partition: ############ [I/fota] Upgrade success, total 48004 bytes. [I/fota] Implement application now. LCD ID:5510
RT-FOTA 移植
RT-FOTA 移植很簡(jiǎn)單,只要 RT-Thread 源碼包中有你的平臺(tái)的 BSP 包即可:)
RT-FOTA 中使用的各種組件的修改也很簡(jiǎn)單,比如 FAL 和 SFUD 就可以參照 RTT 官方說(shuō)明,SignalLED 參照源碼包里的 README.md 即可。
RT-FOTA 可以直接使用在 RT-Thread 的完整版搭載,只需要將 * rt _ fota.c*、*rt _ fota.h * 和 * rt _ fota_crc.c * 放入工程中即可實(shí)現(xiàn),然后用 env 配置相關(guān)組件即可。
編譯下載
雙擊 bootloader.uvprojx 文件,打開(kāi) MDK5 工程,編譯并下載程序到開(kāi)發(fā)板。
工程默認(rèn)配置使用 JLINK 仿真器下載程序,點(diǎn)擊下載按鈕即可下載程序到開(kāi)發(fā)板
運(yùn)行結(jié)果
下載程序成功之后,系統(tǒng) RT-FOTA 會(huì)運(yùn)行:
- 啟動(dòng)后 LED 會(huì)常亮;
- 如果進(jìn)入 shell 模式, LED 會(huì) 1Hz 閃爍;
- 如果進(jìn)入 upgrade 模式, LED 會(huì) 10Hz 閃爍;
連接目標(biāo)板的串口 1 到 PC , 在終端工具里打開(kāi)相應(yīng)的串口(115200-8-1-N),復(fù)位設(shè)備后,可以看到 RT-FOTA 的輸出信息:
____ _____ _____ ___ _____ _ | _ \_ _| | ___/ _ \ _ _|/ \ | |_) || |_____ | |_ || || | | / _ \ | _ < | |_____ | _| ||_|| | |/ ___ \ |_| \_\|_| |_| \___/ |_/_/ \_\ 2016 - 2019 Copyright by Radiation @ warfalcon Version: 1.0.0 build Oct 18 2019 [SFUD] Find a Winbond flash chip. Size is 16777216 bytes. [SFUD] nor_flash0 flash device is initialize success. [I/FAL] ==================== FAL partition table ==================== [I/FAL] | name | flash_dev | offset | length | [I/FAL] ------------------------------------------------------------- [I/FAL] | app | onchip_flash | 0x00020000 | 0x000e0000 | [I/FAL] | fm_area | nor_flash0 | 0x00000000 | 0x00100000 | [I/FAL] | df_area | nor_flash0 | 0x00100000 | 0x00100000 | [I/FAL] ============================================================= [I/FAL] RT-Thread Flash Abstraction Layer (V0.4.0) initialize success.
注意事項(xiàng)
-
RT-FOTA 使用正點(diǎn)原子的探索者開(kāi)發(fā)板,如果要運(yùn)行到其他目標(biāo)板,可能需要修改相關(guān)設(shè)置;
-
代碼中使用的硬件有 usart0、spi0、PE4(key0)、PF9(led0);
-
由于業(yè)余時(shí)間開(kāi)發(fā),文檔逐步完善,但只要有一定編程基礎(chǔ)的朋友,開(kāi)代碼注釋即可知道如果進(jìn)行相關(guān)修改;
- UDSonCAN的BootLoader上位機(jī)開(kāi)發(fā)教程 20次下載
- RT-Thread 如何移植RTT到stm32《Rice RT-Thread 學(xué)習(xí)開(kāi)發(fā)》
- RT-Thread STM32 配置系統(tǒng)時(shí)鐘(使用外部晶振)
- 小熊派開(kāi)發(fā)板移植RT-FOTA
- STM32F103C8 使用RT-Thread軟件包系統(tǒng)讀取MPU6050
- stm32 IOT_STM32通用Bootloader——FOTA
- 基于STM32F407的STM32通用BootLoader使用經(jīng)驗(yàn)
- 寫(xiě)了個(gè)通用的stm32串口bootloader
- RT-Thread (2) RTT SPI設(shè)備驅(qū)動(dòng)流程 || LWIP + ENC28J60
- BootLoader與Linux內(nèi)核的參數(shù)傳遞詳細(xì)資料說(shuō)明 13次下載
- 華晨GT3663臺(tái)灣6M帶寬通用軟件免費(fèi)下載 18次下載
- Bootloader是什么Bootloader的介紹和過(guò)程詳細(xì)解 45次下載
- 模擬I2C總線多主通信的通用軟件包
- 模擬I2C總線多主通信的通用軟件包
- Motorola微處理器的bootloader分析與應(yīng)用
- 深入解讀OTA,了解兩大子系統(tǒng)FOTA與SOTA的升級(jí)優(yōu)勢(shì) 765次閱讀
- RTT是什么?對(duì)TCP中RTT時(shí)延的理解 3.6w次閱讀
- Labview通用軟件實(shí)現(xiàn)功能介紹 727次閱讀
- 基于IAR搭建RA MCU串口與RTT Viewer打?。ㄏ拢?/a> 457次閱讀
- 基于IAR搭建RA MCU串口與RTT Viewer打?。ㄉ希?/a> 503次閱讀
- RT-Thread自動(dòng)初始化機(jī)制 2358次閱讀
- AWR微波平面電路計(jì)算通用軟件的概況和基本功能介紹 1.1w次閱讀
- STM32系統(tǒng)bootloader的應(yīng)用有哪些 5355次閱讀
- 如何在STM32F407單片機(jī)上使用通用的BootLoader經(jīng)驗(yàn)分析 1w次閱讀
- 如何使用STM32通用Bootloader讓OTA更加Easy 2.4w次閱讀
- STM32 Bootloader異常復(fù)位如何解決 9366次閱讀
- RT-Thread軟件包定義和使用 1w次閱讀
- 基于AT91RM9200 處理器系統(tǒng)中BootLoader與內(nèi)核的參數(shù)傳遞 1871次閱讀
- 基于FPGA的通用軟件無(wú)線電平臺(tái)設(shè)計(jì) 3555次閱讀
- 解鎖BootLoader 3580次閱讀
下載排行
本周
- 1GBT1094.11-2022電力變壓器第11部分:干式變壓器
- 14.12 MB | 3次下載 | 免費(fèi)
- 2PT500齒輪傳動(dòng)動(dòng)力學(xué)綜合測(cè)試實(shí)驗(yàn)臺(tái)
- 0.16 MB | 3次下載 | 免費(fèi)
- 3FT-7800R對(duì)講機(jī)維修手冊(cè)附原理圖
- 3.35 MB | 2次下載 | 免費(fèi)
- 4串口工具UartAssist5.0.exe
- 0.60 MB | 2次下載 | 免費(fèi)
- 5爬電距離和電氣間隙計(jì)算
- 0.75 MB | 2次下載 | 1 積分
- 6UC3584DW次級(jí)側(cè)后置穩(wěn)壓器EVM板原理圖
- 38.97KB | 2次下載 | 免費(fèi)
- 7UCC38C42 25瓦自諧振復(fù)位正激變換器
- 320.6KB | 1次下載 | 免費(fèi)
- 8使用15個(gè)時(shí)鐘周期的ADS7841和ADS7844
- 188.55KB | 1次下載 | 免費(fèi)
本月
- 1ACDC變換器的原理圖免費(fèi)下載
- 0.26 MB | 65次下載 | 免費(fèi)
- 2無(wú)刷電機(jī)控制方案設(shè)計(jì)合作
- 1.05 MB | 22次下載 | 免費(fèi)
- 3美的超薄電磁爐TM-S1-09B主板原理圖
- 0.08 MB | 20次下載 | 免費(fèi)
- 4純電動(dòng)汽?的主要部件及?作原理
- 5.76 MB | 12次下載 | 5 積分
- 5GP328和GP88S對(duì)講機(jī)的維修實(shí)列資料合集免費(fèi)下載
- 0.03 MB | 10次下載 | 10 積分
- 6舒爾SLX4無(wú)線話筒接收機(jī)原理圖:二次變頻超外差部分
- 0.27 MB | 8次下載 | 免費(fèi)
- 7i.MX Linux開(kāi)發(fā)實(shí)戰(zhàn)指南—基于野火i.MX系列開(kāi)發(fā)板
- 17.86 MB | 7次下載 | 免費(fèi)
- 8Type-C VL160數(shù)據(jù)手冊(cè)
- 0.92 MB | 7次下載 | 3 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935115次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420061次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233084次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191363次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183329次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73805次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65985次下載 | 10 積分
評(píng)論
查看更多