微控制器編程 | ISP、IAP 與 ICP 的原理與比較

注:英文引文,機翻未校。

圖片清晰度限于引文原狀。


Introduction to Programming of Microcontroller: ISP, IAP and ICP

微控制器編程介紹:ISP、IAP 和 ICP

Date: 30-11-2022

1. What is Microcontroller Programming

什么是微控制器編程

Microcontroller programming is to load the original program into the computer after compiling and processing, and let the computer execute the written program.
微控制器編程是將編譯和處理后的原始程序加載到計算機中,并讓計算機執行所編寫的程序。

For example, when programming a single-chip microcomputer, it loads the .hex file and stores it in the single-chip computer.
例如,在編程單片機時,它會加載.hex 文件并將其存儲在單片機中。

The written program can be realized when the computer is turned on.
編寫的程序在計算機啟動時可以實現。

To put it simply, it is the process of making the microcomputer boot and execute the programming.
簡而言之,這就是讓微計算機啟動并執行編程的過程。

Chip programming is an important part of the production process of electronic products.
芯片編程是電子產品生產過程中的一個重要環節。

The efficiency is an important aspect that customers pay attention to.
效率是客戶關注的一個重要方面。

Generally, the current programming methods are divided into two types: offline programming and online programming.
一般來說,目前的編程方法分為兩種:離線編程和在線編程。

Offline programming:

離線編程:

Through the link of the adapter and the chips of different packages, the chip and the adapter can be used together to realize the programming of the program.
通過適配器與不同封裝的芯片的連接,芯片和適配器可以一起用于實現程序的編程。

The essence of the adapter is similar to a precision fixture, and chips in different packages need to be matched with different adapters.
適配器的本質類似于一種精密夾具,不同封裝的芯片需要與不同的適配器匹配。

If there is an error during the production test, the chip needs to be disassembled from the adapter and re-programmed according to the prescribed process, which consumes a lot of manpower and material resources, and the cost is high, and it is also relatively prone to problems.
如果在生產測試過程中出現錯誤,芯片需要從適配器上拆卸下來,并按照規定流程重新編程,這會消耗大量的人力和物力資源,成本較高,也相對容易出現問題。

Therefore, offline programming is generally not recommended.
因此,不建議使用離線編程。

Online programming:

在線編程:

Online programming uses the standard communication bus of the chip, such as USB, SWD, JTAG, UART, etc.
在線編程使用芯片的標準通信總線,例如 USB、SWD、JTAG、UART 等。

The interface is generally fixed, and there are few pins that need to be connected during programming.
接口通常是固定的,在編程過程中需要連接的引腳很少。

Since the communication rate of the interface is not high, the programming can be completed by using ordinary wires without high consumption.
由于接口的通信速率不高,可以通過使用普通導線完成編程,而無需高消耗。

Online programming is programmed by connecting wires.
在線編程通過連接導線進行編程。

If an error is found during production testing, you can perform programming again without disassembling the chip.
如果在生產測試過程中發現錯誤,無需拆卸芯片即可重新進行編程。

It not only saves production cost, but also increases the efficiency of programming.
這不僅節省了生產成本,還提高了編程效率。

So now the way of online burning is generally used.
因此,現在通常使用在線燒錄的方式。

2. Three Common Methods of Microcontroller Programming: ISP, IAP and ICP

三種常見的微控制器編程方法:ISP、IAP 和 ICP

Let’s talk about the three common methods of microcontroller programming: ISP, IAP and ICP, and their differences.
讓我們來談談微控制器編程的三種常見方法:ISP、IAP 和 ICP,以及它們之間的區別。

What are the principles of these three programs?
這三種程序的原理是什么?

Before analyzing the principle, you need to know the access address of the microcontroller Flash to see where the program is burned.
在分析原理之前,你需要了解微控制器 Flash 的訪問地址,以查看程序燒錄的位置。

1). The location of MCU Flash in the address mapping table

1). MCU Flash 在地址映射表中的位置

The figure below is an address mapping table of STM32F4xx, from 0x0000 0000 to 0xFFFF FFFF, totaling 4Gbyte.
下圖是 STM32F4xx 的地址映射表,從 0x0000 0000 到 0xFFFF FFFF,總共 4G 字節。

The access addresses of the on-chip Flash, on-chip RAM, on-chip peripherals and external expansion interfaces of the microcontroller are all mapped within the range of 4Gbyte.
微控制器的片上 Flash、片上 RAM、片上外設和外部擴展接口的訪問地址都映射在 4G 字節的范圍內。

address mapping table of stm32f4xx

In this picture, we need to pay attention to the lower part:
在這張圖中,我們需要關注下部:

Main memory main storage area: Usually, the code we write is placed at the starting position of the main storage area (0x0800 0000) to start running.
主存儲區主存儲區域: 通常,我們編寫的代碼放置在主存儲區的起始位置(0x0800 0000)以開始運行。

When run the program, just from here 0x0800 0000.
運行程序時,就從這里 0x0800 0000 開始。

System memory system storage area: System memory (starting position 0x1FFF 0000).
系統存儲區系統存儲區域: 系統存儲器(起始位置 0x1FFF 0000)。

This is a piece of ROM that cannot be modified after leaving the factory.
這是一片在出廠后無法修改的 ROM。

After understanding the specific address of the program, we also need to look at the startup method of the single-chip microcomputer:
了解程序的具體地址后,我們還需要查看單片微機的啟動方式:

2). Introduction to ISP, ICP, and IAP

2). ISP、ICP 和 IAP 介紹

ISP: In System Programming.

ISP:系統內編程。

ISP means that programming can be performed on the board level, that is, the entire program is written without dismantling the chip, usually through the ISP interface line.
ISP 意味著可以在板級進行編程,即無需拆卸芯片即可寫入整個程序,通常通過 ISP 接口線完成。

Chips that support ISP generally solidify a boot program (upgraded with ISP) inside the chip.
支持 ISP 的芯片通常在芯片內部固化了一個引導程序(可通過 ISP 升級)。

BOOT0 = 1, BOOT1 = 0

Start address: 0x1FFF0000

For example:
例如:

use Flash loader to program STM32, use STC-ISP to program STC chip.
使用 Flash loader 對 STM32 進行編程,使用 STC-ISP 對 STC 芯片進行編程。

use stc-isp to program stc chip

ICP: In Circuit Programming

ICP:電路內編程

ICSP: In-Circuit Serial Programming, in-circuit serial programming. Such as: EEPROM programming, etc.
ICSP:電路內串行編程,例如 EEPROM 編程等。

BOOT0 = 0, BOOT1 = x
BOOT0 = 0,BOOT1 = x

Start address: 0x08000000
起始地址:0x08000000

There are different opinions on the ICP programming method on the Internet.
網上對 ICP 編程方法有不同的看法。

From the literal meaning (in the circuit), all the chips that are being programmed need to be powered on, and they are all in the circuit.
從字面意思(在電路中)來看,所有正在編程的芯片都需要通電,并且它們都在電路中。

Strictly speaking, programming using J-Link, ST-Link, e-Link32 and other tools also belongs to in-circuit programming (ICP).
嚴格來說,使用 J-Link、ST-Link、e-Link32 等工具進行的編程也屬于電路內編程(ICP)。

icp

IAP: In application programming.

IAP:應用內編程。

Perform programming (upgrade program, update firmware) while the program is running.
在程序運行時執行編程(升級程序、更新固件)。

The principle of IAP is quite different from the above two.
IAP 的原理與上述兩種方式有很大不同。

In this way, the main storage area is divided into two areas (allocated by the developer according to actual needs).
在這種方式中,主存儲區被劃分為兩個區域(由開發者根據實際需要分配)。

This part at the beginning of 0x0800 0000 stores a developer’s own designed Bootloader program, the other part stores the APP program that actually needs to run.
從 0x0800 0000 開始的部分存儲開發者自己設計的 Bootloader 程序,另一部分存儲實際需要運行的 APP 程序。

IAP is the programming of part of the User Flash by the user’s own program during operation.
IAP 是在運行過程中由用戶自己的程序對部分用戶 Flash 進行編程。

The purpose is to update and upgrade the firmware program in the product through the reserved communication port conveniently after the product is released.
其目的是通過預留的通信端口,在產品發布后方便地更新和升級產品中的固件程序。

IAP communication port There are many kinds of IAP communication ports: UART serial port, ETH Ethernet, I2C, SPI, etc.
IAP 通信端口有很多種:UART 串口、ETH 以太網、I2C、SPI 等。

It stands to reason that as long as the communication port that can transmit data can realize the function of IAP.
只要能夠傳輸數據的通信端口就可以實現 IAP 功能。

iap

The Difference Between ISPs and IAPs

ISP 與 IAP 的區別

1) For Applications

1) 應用方面

  1. The update of ISP program needs to be solved on site, but it does not need to dismantle the machine;

  2. ISP 程序的更新需要在現場解決,但無需拆卸機器;

  3. IAP If there is a network management system, use the network management to download everything, and people don’t have to run around.

  4. IAP 如果有網絡管理系統,可以使用網絡管理下載所有內容,人們無需四處奔波。

2) How ISPs and IAPs Work

2) ISP 和 IAP 的工作方式

The implementation of ISP is relatively simple, and the common practice is that the internal memory can be rewritten by the software of the host computer through the serial port.
ISP 的實現相對簡單,常見的做法是通過串口由宿主計算機的軟件重寫內部存儲器。

For the microcontroller, the data can be received through SPI or other serial interfaces and written into the memory.
對于微控制器,數據可以通過 SPI 或其他串行接口接收并寫入存儲器。

So even if we solder the chip on the circuit board, as long as the serial port to interface with the host computer is reserved, the internal memory can be rewritten.
因此,即使我們將芯片焊接到電路板上,只要保留了與宿主計算機接口的串口,就可以重寫內部存儲器。

The implementation of IAP is complicated.
IAP 的實現較為復雜。

When implementing the function, it needs to have two areas for storage inside the MCU.
在實現該功能時,需要在 MCU 內部有兩個存儲區域。

Generally, there are 2 areas, one is called the BOOT area, and the other is storage area.
通常有兩個區域,一個稱為 BOOT 區域,另一個是存儲區域。

The MCU is powered on and runs in the BOOT area.
MCU 上電后在 BOOT 區域運行。

If the conditions for external program rewriting are met, the program in the storage area will be rewritten.
如果滿足外部程序重寫的條件,則存儲區域中的程序將被重寫。

If the conditions for rewriting the program externally are not met, the program pointer jumps to the storage area and starts to execute the program placed in the storage area, thus realizing the IAP function.
如果不滿足外部重寫程序的條件,則程序指針跳轉到存儲區域并開始執行存儲區域中放置的程序,從而實現 IAP 功能。

3) Advantages of ISPs and IAPs

3) ISP 和 IAP 的優勢

ISP: The experiment and development of the microcontroller can be carried out without a programmer.
ISP:可以在沒有編程器的情況下進行微控制器的實驗和開發。

The MCU chip can be directly welded to the circuit board, and the finished product is ready after debugging, which eliminates the frequent insertion and removal of the chip to the chip and the circuit board during debugging.
可以將 MCU 芯片直接焊接到電路板上,調試后即可完成成品,避免了在調試過程中頻繁地將芯片插入和拔出芯片和電路板。

Inconvenience caused.
由此帶來的不便。

IAP: The IAP technology maps the Flash memory into two memory parts structurally.
IAP:IAP 技術在結構上將 Flash 內存映射為兩個內存部分。

When running the user program on one memory bank, the other memory bank can be reprogrammed, and then the program is transferred from one memory bank to the other.
當在一個存儲庫上運行用戶程序時,可以對另一個存儲庫進行重新編程,然后將程序從一個存儲庫轉移到另一個存儲庫。

The realization of ISP generally requires few external circuits to assist the realization, while the realization of IAP is more flexible.
ISP 的實現通常需要很少的外部電路來協助實現,而 IAP 的實現則更加靈活。

Usually, the serial port of the single-chip microcomputer can be used to connect to the RS232 port of the computer, and the internal memory can be programmed through a specially designed firmware program.
通常,可以使用單片微機的串行端口連接到計算機的 RS232 端口,并通過專門設計的固件程序對內部存儲器進行編程。

It is very convenient to realize remote upgrade and maintenance through Internet or other communication methods.
通過 Internet 或其他通信方式實現遠程升級和維護非常方便。


單片機三種燒錄方式 ICP、IAP 和 ISP 詳解

深藏功名丿小志 _zhihu

單片機的燒錄方式主要可以分為三種,分別為 ICP(In Circuit Programming,在電路編程)、IAP(In Application Programming,在應用編程)以及 ISP(In System Programming,在系統編程)。學習單片機的同學都應該熟悉 IAP、ICP 和 ISP 這幾個術語。以下是對這三種燒錄方式的詳細介紹。

1. ICP(In Circuit Programming)在電路編程

使用過新唐單片機的開發者一定知道,新唐單片機配套了一套編程工具,即 NuMicro ICP Programming Tool。類似地,ST 芯片也配備了 J-Flash 工具。

通過使用對應廠家的軟件以及仿真器,可以燒錄程序。目前主流的接口包括 JTAG(Joint Test Action Group)和 SWD(Serial Wire Debug)。ICP 編程主要通過 SWD 接口實現。

下圖為 JTAG 接口和 SWD 接口的區別:

img

執行 ICP 功能僅需要三個引腳:RESET、ICPDA 和 ICPCK。RESET 用于進入或退出 ICP 模式,ICPDA 為數據輸入輸出引腳,ICPCK 為編程時鐘輸入引腳。用戶需要在系統板上預留 VDD、GND 以及這三個引腳。

img

新唐官方給出了詳細描述:ICP 指的是“在電路編程”,PC 上運行的軟件“NuMicro ICP 編程工具”通過 SWD 接口更新芯片內部的 APROM、LDROM、數據閃存(DataFlash)和目標用戶配置字(Config)。

img

2. ISP(In System Programming)在系統編程

ISP 指的是“在系統上編程”,目標芯片通過 USB/UART/SPI/I2C/RS-485/CAN 等周邊接口的 LDROM 引導代碼更新芯片內部的 APROM、數據閃存(DataFlash)和用戶配置字(Config)。

img

3. IAP(In Application Programming)在應用編程

IAP 是通過軟件實現在線電擦除和編程的方法。IAP 技術從結構上將 Flash 存儲器映射為兩個存儲體,當運行一個存儲體上的用戶程序時,可以對另一個存儲體重新編程,之后將程序從一個存儲體轉向另一個。

燒錄工具及案例

以下是三種燒錄方式在燒錄過程中使用的燒錄工具及具體案例:

  1. ICP 使用 SWD 接口進行燒錄程序。常用的燒錄工具包括 J-Link、ST-Link、Nu-Link,與之配套的燒錄軟件分別為 J-Flash、NuMicro ICP Programming Tool、ST-Link Utility。

    img

  2. ISP 使用引導程序通過 USB/UART 等接口進行燒錄。首先需要有 Bootload 程序。最常見的燒錄方式是學習 8051 單片機時使用的 STC-ISP 燒錄工具。

    img

  3. IAP 是通過軟件實現在線電擦除和編程的方法,不使用任何外部工具,僅通過軟件方法更新 Flash 中的數據。例如,通過 4G 模塊遠程更新程序。將 Flash 分成兩塊區域,第一塊為 Bootload 程序,第二塊區域存放應用程序(APP)。4G 模塊與目標板通信,通信中包含是否更新的標志位。如果主板接收到需要更新的標志位,就往 Flash 中寫入一個標志位(如“P”),之后程序跳轉到第一段程序(Bootload 程序)執行。首先判斷 Flash 中是否有更新程序的標志位“P”,如果有,則通過規定的協議更新應用程序中的程序,更新完畢后清除 Flash 中的更新標志位,跳轉到應用程序執行。如果沒有更新程序標志位“P”,則直接跳轉到應用程序執行。

總結

  1. ICP:使用 SWD 接口進行燒錄,例如 J-Link 燒錄器配合 J-Flash 軟件使用。
  2. ISP:使用引導程序(Bootload)加上外圍 UART/USB 等接口進行燒錄。
  3. IAP:通過軟件自身實現在線電擦除和編程的方法,不使用任何外部工具。程序通常分為兩部分:引導程序和應用程序。

最后提出一個問題:

在使用IAP(In - Application Programming,應用內編程)技術時,一個值得探討的問題是:能否將引導程序(Bootloader)與應用程序(APP)合并至同一代碼區,并且在此情況下依然實現軟件更新功能?

答案是可行的,但這需要滿足特定條件并遵循一定的設計要求。以下將從可行性分析、實現方法、注意事項及補充說明等方面進行詳細闡述。

IAP 編程中引導程序與應用程序在同一代碼區的更新可行性分析及實現注意事項

一、可行性分析
  1. 資源限制:單片機的 Flash 容量有限,將引導程序和應用程序合并,可減少因劃分多個存儲區域造成的資源浪費,有效節省存儲空間。
  2. 程序結構:傳統 IAP 實現通常將引導程序和應用程序分離,由引導程序負責應用程序的更新。但通過精心設計,讓引導程序在完成更新后直接跳轉至應用程序,且二者共享同一代碼區,就能實現合并。
二、實現方法
  1. 程序設計
    • 引導程序功能:引導程序需具備以下核心功能。一是檢測是否有程序更新需求;二是通過通信接口接收新的應用程序數據,并將其寫入 Flash 存儲器;三是采用 CRC(循環冗余校驗)校驗或哈希算法等,驗證新應用程序的完整性;四是在驗證成功后,安全地跳轉至應用程序的入口地址。
    • 應用程序功能:應用程序正常運行時執行核心業務邏輯。軟件更新時,引導程序會臨時覆蓋應用程序代碼區域,應用程序本身無需感知更新過程。
  2. 內存布局
    • 單一代碼區設置:把引導程序和應用程序置于連續的 Flash 存儲空間內。一般引導程序位于 Flash 存儲器起始位置,應用程序緊隨其后。編譯鏈接時,要準確指定各個段的起始地址和長度。
    • 更新機制:更新時,引導程序接收新的應用程序數據后,將其寫入分配給應用程序的 Flash 區域。更新完成后,引導程序執行跳轉指令,指向應用程序的入口地址。
  3. 更新流程
    • 啟動檢測:設備啟動時,引導程序率先執行,通過讀取特定 Flash 地址的值、檢測特定引腳電平或檢查版本信息等方式,判斷是否存在更新請求標志或條件。
    • 新程序接收:若檢測到更新需求,引導程序通過 UART、USB、以太網等預定通信接口接收新的應用程序數據。為保障數據傳輸可靠性,應實現握手協議和錯誤檢測機制。
    • Flash 擦除:寫入新數據前,必須先擦除 Flash 存儲器中原應用程序所在區域。操作時要注意 Flash 存儲器的擦寫特性,如擦除最小單位是扇區或塊,寫入最小單位是頁或字。
    • 數據寫入:將接收到的新應用程序數據寫入 Flash 存儲器的應用程序區域,確保寫入數據的正確性和完整性。
    • 新程序校驗:寫入完成后,采用 CRC 校驗或哈希校驗等方式對新寫入的數據進行校驗。若校驗失敗,表明更新過程出錯,需采取重新下載或回滾到舊版本等錯誤處理措施。
    • 跳轉執行:若校驗成功,引導程序設置程序計數器(PC)指向應用程序的入口地址,并執行跳轉指令,啟動新的應用程序。
三、注意事項
  1. 代碼保護:更新過程中,必須確保引導程序不被覆蓋,否則設備將無法正常啟動。保護方法有:將引導程序置于 Flash 存儲器固定區域(如起始位置);啟用 Flash 存儲器的寫保護功能;在引導程序中添加自校驗代碼,檢測是否被篡改。
  2. Flash 操作:進行 Flash 存儲器的擦除和寫入操作時,要嚴格遵循其特性和時序要求,防止因誤操作導致存儲器損壞或數據丟失。
  3. 通信協議設計:需設計健壯的通信協議傳輸新的應用程序數據,確保數據完整性和正確性。可采用校驗和、CRC 校驗或哈希算法檢測傳輸錯誤;運用重傳機制處理數據包丟失;實現流量控制機制防止數據溢出。
  4. 異常處理:更新過程中可能出現斷電、通信中斷、校驗失敗等異常情況。需設計完善的異常處理機制,如在關鍵操作前保存寄存器值、堆棧指針等上下文信息;利用看門狗定時器監控程序運行狀態;提供回滾機制以便在更新失敗時恢復到舊版本,保障設備在異常情況下能夠安全恢復。
  5. 版本管理:建議在引導程序和應用程序中均添加版本號管理功能,包含主版本號、次版本號、修訂號等信息,便于識別當前運行的軟件版本,并在更新時進行版本兼容性校驗。
四、補充說明
  1. 引導程序設計原則:引導程序應保持代碼簡潔,避免依賴外部庫或復雜邏輯,以確保其可靠性和穩定性,實現各種情況下安全啟動設備和執行更新操作的目標。
  2. 應用程序兼容性:更新應用程序時,必須確保新版本與硬件及操作系統、設備驅動程序、中間件等其他軟件模塊完全兼容,通過兼容性測試避免因更新導致系統無法正常運行或出現未知錯誤。
  3. 測試與驗證:在將 IAP 系統部署到實際產品前,需對整個更新流程進行充分測試與驗證,包括正常更新場景測試、異常情況處理測試(如模擬斷電、通信中斷、校驗失敗等)、壓力測試(模擬長時間運行和頻繁更新)以及安全測試(檢測是否存在惡意代碼注入、數據篡改等安全漏洞),確保 IAP 系統的魯棒性。

通過上述設計與實現方法,能夠將引導程序和應用程序合并至一個代碼區,實現便捷的軟件更新功能。同時,完善的異常處理和版本管理機制可顯著提升系統的穩定性和可維護性。

發布于 2019-06-15 10:43


via:

  • Introduction to Programming of Microcontroller: ISP, IAP and ICP Embedded Technology Information EmbedIc
    https://www.embedic.com/technology/details/introduction-to-programming-of-microcontroller--isp--iap-and-icp

  • 單片機三種燒錄方式ICP、IAP和ISP詳解 - 知乎
    https://zhuanlan.zhihu.com/p/69237591

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/903560.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/903560.shtml
英文地址,請注明出處:http://en.pswp.cn/news/903560.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Allegro23.1新功能之新型via structure創建方法操作指導

Allegro23.1新功能之新型via structure創建方法操作指導 Allegro升級到了23.1后,支持創建新型via structure 通過直接定義參數來生成 具體操作如下 打開軟件,選擇 Allegro PCB Designer

IBM WebSphere Application Server 7.0/8.5.5證書過期問題處理

證書過期錯誤日志: [3/14/16 7:22:20:332 PDT] 0000007d WSX509TrustMa E CWPKI0312E: The certificate with subject DN CNMXSYSTEMS, OUctgNodeCell01, OUctgNode01, OIBM, CUS has an end date Mon Jan 11 11:17:18 PST 2016 which is no longer valid. [3/14/…

select,poll,epoll區別聯系

selsect,poll,epoll區別聯系 目錄 一、區別 二、聯系 select、poll 和 epoll 都是在 Linux 系統中用于實現 I/O 多路復用的機制,它們的主要目的是讓程序能夠同時監控多個文件描述符,以判斷是否有事件發生,從而提高 I/O 操作的效率。 一、區…

curl和wget的使用介紹

目錄 一、curl 和 wget 區別 二、wget的使用 2.1 參數說明 2.2 wget 使用示例 三、curl的使用 3.1 參數說明 3.2 curl使用示例 一、curl 和 wget 區別 wget 和 curl 都可以下載內容。它們都可以向互聯網發送請求并返回請求項,可以是文件、圖片或者是其他諸如…

日語學習-日語知識點小記-構建基礎-JLPT-N4階段(12): ておき ます

日語學習-日語知識點小記-構建基礎-JLPT-N4階段(12): ておき ます。 1、前言(1)情況說明(2)工程師的信仰 2、知識點(1)~ておき ます。(2&#x…

高質量水火焰無損音效包

今天設計寶藏給大家分享的是Cinematic Elements: Fire & Water音頻資源庫包含大量高質量的火焰和水的聲音效果。它具有非常強烈的個性特征和次世代的音效。火焰和水是兩個令人印象深刻而 interessing 的元素。它們的表現形式從微小無害到巨大毀滅性都有。因此,它們的聲音特…

畢業論文 | 傳統特征點提取算法與匹配算法對比分析

傳統特征點提取算法與匹配算法對比分析 一、特征點提取算法對比二、特征匹配算法對比三、核心算法原理與公式1. **Harris角點檢測**2. **SIFT描述子生成**3. **ORB描述子**四、完整Matlab代碼示例1. **Harris角點檢測與匹配**2. **SIFT特征匹配(需VLFeat庫)**3. **ORB特征匹配…

【網絡原理】從零開始深入理解HTTP的報文格式(二)

本篇博客給大家帶來的是網絡HTTP協議的知識點, 續上篇文章,接著介紹HTTP的報文格式. 🐎文章專欄: JavaEE初階 🚀若有問題 評論區見 ? 歡迎大家點贊 評論 收藏 分享 如果你不知道分享給誰,那就分享給薯條. 你們的支持是我不斷創作的動力 . 王子,公主請閱…

Microsoft .NET Framework 3.5 離線安裝包 下載

Microsoft. NET Framework 3.5 是支持生成和運行下一代應用程序和XML Web Services 的內部Windows 組件, 對 .NET Framework 2.0 和 3.0 中的許多新功能進行了更新和增補, 且附帶了 .NET Framework 2.0 Service Pack 1 和 .NET Framework 3.0 Service…

Flask + ajax上傳文件(三)--圖片上傳與OCR識別

本教程將詳細介紹如何使用Flask框架構建一個圖片上傳與文字識別(OCR)的Web應用。我們將使用EasyOCR作為OCR引擎,實現一個支持中文和英文識別的完整應用。 環境準備 首先,確保你已經安裝了Python 3.7+環境,然后安裝必要的依賴庫: pip install flask easyocr pillow werkz…

模型部署技巧(一)

模型部署技巧(一) 以下內容是參考CUDA與TensorRT模型部署內容第六章,主要針對圖像的前/后處理中的trick。 參考: 1.部署分類器-int8-calibration 2. cudnn安裝地址 3. 如何查找Tensor版本,與cuda 和 cudnn匹配 4. ti…

MySQL--數據引擎詳解

存儲引擎 MySQL體系結構 連接層: 主要接收客戶端的連接,然后完成一些鏈接的處理,以及認證授權的相關操作和安全方案,還要去檢查是否超過最大連接數等等,比如在連接MySQL服務器時需要輸入用戶名,密碼&#…

【含文檔+PPT+源碼】基于微信小程序的健康飲食食譜推薦平臺的設計與實現

項目介紹 本課程演示的是一款基于微信小程序的健康飲食食譜推薦平臺的設計與實現,主要針對計算機相關專業的正在做畢設的學生與需要項目實戰練習的 Java 學習者。 1.包含:項目源碼、項目文檔、數據庫腳本、軟件工具等所有資料 2.帶你從零開始部署運行本…

當OA闖入元宇宙:打卡、報銷和會議的未來狂想

引言:虛實共生中的組織基因突變 元宇宙正以虛實共生的形態重構人類協作的底層邏輯。傳統OA系統建立的物理規則——指紋打卡驗證在場性、紙質票據堆砌信任鏈、會議室排期協調時空資源——在元宇宙的數字原野上迎來基因級重組。這場變革不僅是技術工具的迭代&#xf…

解決vscode cmake提示檢測到 #include 錯誤

一、問題 cmake已經包含了動態庫文件,依然提示“檢測到 #include 錯誤。請更新 includePath。” 二、解決方案 Ctrl Shift P進入CPP編輯配置,然后在JSON中加入下面一行: "configurationProvider": "ms-vscode.cmake-tools&…

2024ICPC成都題解

文章目錄 L. Recover Statistics(簽到)J. Grand Prix of Ballance(模擬簽到)A. Arrow a Row(構造)B. Athlete Welcome Ceremony(線性dp)G. Expanding Array(打表結論)I. Good Partitions(線段樹)E. Disrupting Communications(換根dpLCA倍增)K. Magical Set(費用流) 題目鏈接 …

達夢數據庫官方遷移工具SQLark:支持Oracle/MySQL/PostgreSQL遷移至達夢數據庫!

SQLark 百靈連接是一款面向信創應用開發者的數據庫開發和管理工具,由達夢數據歷時三年自主研發,注冊即可免費使用客戶端(官網鏈接www.sqlark.com)。今天,我們將重點介紹SQLark的特色功能之一——數據遷移,該…

映射關系4

好!我明白了!💥 你希望我在你的基礎上,繼續優化 insertPathWithIds,讓它: ? 支持每一級節點的 idPart 是字符串(而不是int)。 ? 結構更清晰,更快拼接。 ? 完全符合C98…

PDF Shaper v15.0

如今對PDF處理的軟件很多都是只是單一的功能。PDF Shaper給你完全不同的體驗,因為PDF Shaper是一款免費的PDF工具集合的軟件。有了PDF Shaper,你以后再也不用下載其他處理PDF的軟件了。PDF Shaper的功能有:合并,分割,加…

【Python爬蟲基礎篇】--4.Selenium入門詳細教程

先解釋:Selenium:n.硒;硒元素 目錄 1.Selenium--簡介 2.Selenium--原理 3.Selenium--環境搭建 4.Selenium--簡單案例 5.Selenium--定位方式 6.Selenium--常用方法 6.1.控制操作 6.2.鼠標操作 6.3.鍵盤操作 6.4.獲取斷言信息 6.5.…