ARM裸機-18(SD卡啟動)

1、主流的外存設備介紹

????????內存和外存的區別:一般是把這種RAM(random access memory,隨機訪問存儲器,特點是任意字節讀寫,掉電丟失)叫內存,把ROM (read only memory,只讀存儲器,類似于Flash、SD卡之類的,用來存儲東西,掉電不丟失,不能隨機地址訪問,只能以塊為單位來訪問)叫外存。

1.1、軟盤、硬盤、光盤、CD、磁帶

? ? ? ? (1)、存儲原理大部分為磁存儲,缺點是讀寫速度、可靠性等。優點是技術成熟、價格便宜。
使用在桌面電腦中,在嵌入式設備中幾乎無使用。

????????(2)、現代存儲的發展方向是Flash存儲,閃存技術是利用電學原理來存儲1和0,從而制成存儲設備。所以閃存設備沒有物理運動(硬盤中的磁頭),I所以讀寫速度可以很快,且無物理損耗。

1.2、純粹的Flash:NandFlash、NorFlash

????????(1)、這些是最早出現的、最原始的Flash顆粒組成芯片。也就是說NandFlash、NorFlash芯片中只是對存儲單元做了最基本的讀寫接口,然后要求外部的SoC來提供Flash讀寫的控制器以和Flash進行讀寫時序。

????????(2)、缺陷:1、讀寫接口時序比較復雜;2、內部無壞塊處理機制,需要SoC自己來管理Flash的壞塊;3、各家廠家的Flash接口不一致,甚至同一個廠家的不同型號、系列的Flash接口都不一致,這就造成產品升級時很麻煩。

????????(3)、NandFlash分MLC和SLC兩種。SLC技術比較早,可靠性高,缺點是容量做不大(或者說容量大了太貴,一般SLC Nand都是512MB以下);MLC技術比較新,不成熟,可靠性差,優點是容量可以做很大很便宜,現在基本都在發展MLC技術。

1.3、SD卡、MMC卡、MicroSD、TF卡

????????(1)、這些卡其實內部就是Flash存儲顆粒,比直接的Nand芯片多了統一的外部封裝和接口。

????????(2)、卡都有統一的標準,譬如SD卡都是遵照SD規范來發布的。這些規范規定了SD卡的讀寫速度、讀寫接口時序、讀寫命令集、卡大小尺寸、引腳個數及定義。這樣做的好處就是不同廠家的SD卡可以通用。

1.4、iNand、MoviNand、eSSD

????????(1)、電子產品如手機、相機等,前些年趨勢是用SD卡/TF卡等擴展存儲容量;但是近年來的趨勢是直接內置大容量Flash芯片而不是外部擴展卡。

????????(2)、外部擴展卡時間長了,卡槽可能會接觸不良導致不可靠。

????????(3)、現在主流的發展方向是使用iNand、MoviNand、eSSD (還有別的一些名字)來做電子產品的存儲芯片。這些東西的本質還是NandFlash,內部由Nand的存儲顆粒構成,再集成了塊設備管理單元,綜合了SD卡為代表的各種卡的優勢和原始的NandFlash芯片的優勢。

????????(4)、優勢:1、向SD卡學習,有統一的接口標準(包括引腳定義、物理封裝、接口時序)。2、向原始的Nand學習,以芯片的方式來發布而不是以卡的方式;3、內部內置了Flash管理模塊,提供了諸如壞塊管理等功能,讓Nand的管理容易了起來。

1.5、SSD

????????

2、SD卡的特點和背景知識

2.1、SD卡和MMC卡的關系

????????(1)、MMC標準比SD標準早,SD標準兼容MMC標準。

????????(2)、MMC卡可以被SD讀卡器讀寫,而SD卡不可以被MMC讀卡器讀寫。

2.2、SD卡和Nand、Nor等Flash芯片差異

????????(1)、SD卡/MMC卡等卡類有統一的接口標準,而Nand芯片沒有統一的標準(各家產品會有差異)。

2.3、SD卡與MicroSD的區別

????????(1)、體積大小區別而已,傳輸與原理完全相同。

2.4、SD卡與TF卡的區別

????????(1)、外觀上,SD卡大而TF卡小;用途上,SD卡用于數碼相機等而TF卡廣泛用于手機、GPS等。

????????(2)、時間上,SD卡1999年推出,TF卡于2004年推出;SD卡由日本松下、東芝與美國SanDisk共同推出,而TF卡由Motorola與SanDisk共同推出。

????????(3)、SD卡有寫保護而TF卡沒有,TF卡可以通過卡套轉成SD卡使用。

3、SD卡的編程接口

3.1、SD卡的物理接口

? ? ? ? (1)、SD卡中9針腳與外界進行物理連接,這9個腳中有2個地,1個電源,6個信號線。

3.2、SD協議與SPI協議

????????(1)、SD卡與SRAM/DDR/SROM之類的東西的不同:SRAM/DDR/SROM之類的存儲芯片是總線式的,只要連接上初始化好之后就可以由SoC直接以地址方式來訪問。但是SD卡不呢個直接通過接口給地址來訪問,它的訪問需要按照一定的接口協議(時序)來訪問。

????????(2)、SD卡雖然只有一種物理接口,但是卻支持兩種讀寫協議:SD協議和SPI協議。

3.3、SPI協議特點 (低速、接口操作時序簡單、適合單片機)

????????(1)、SPI協議是單片機中廣泛使用的一種通信協議,并不是為SD卡專門發明的。

????????(2)、SPI協議相對SD協議來說速度比較低。

????????(3)、SD卡支持SPI協議,就是為了單片機方便使用。

3.4、SD協議特點(高速、接口時序復雜,適合有SDIO接口的SoC)

????????(1)、SD協議是專門用來和SD卡通信的。

????????(2)、SD協議要求SoC中有SD控制器,運行在高速率下,要求SoC的主頻不能太低。

3.5、S5PV210的SD/MMC控制器

????????(1)、數據手冊Section8.7,為SD/MMC控制器介紹。

????????(2)、SD卡內部除了存儲單元Flash外,還有SD卡管理模塊,我們SoC和SD卡通信時,通過9針引腳以SD協議/SPI協議向SD卡管理模塊發送命令、時鐘、數據等信息,然后從SD卡返回信息給SoC來交互。工作時每一個任務(譬如初始化SD卡、譬如讀一個塊、譬如寫、譬如擦除···) 都需要一定的時序來完成(所謂時序就是先向SD卡發送xx命令,SD卡回xx消息,然后再向SD卡發送xx命令...)。

4、S5PV210的SD卡啟動詳解1

4.1、SoC為何要支持SD卡啟動

? ? ? ?(1)、一?個普遍性的原則就是:SoC支持的啟動方式越多,將來使用時就越方便,用戶的可選擇性就越大,SoC的適用面就越廣。

????????(2)、SD卡有一些好處:譬如可以在不借用專用燒錄工具 (類似Jlink) 的情況下對SD卡進行刷機,然后刷機后的SD卡插入卡槽,SoC即可啟動:譬如可以用SD卡啟動進行量產刷機(量產卡)。像我們X210開發板,板子貼片好的時候,內部iNand是空的,此時直接啟動無啟動;板子出廠前官方刷機時是把事先做好的量產卡插入SD卡卡槽,然后打到iNand方式啟動;因為此時iNand是空的所以第一啟動失敗,會轉而第二啟動,就從外部SD2通道的SD卡啟動了。啟動后會執行刷機操作對iNand進行刷機,刷機完成后自動重啟 (這回重啟時iNand中已經有image了,所以可以啟動了)。刷機完成后SD量產卡拔掉,燒機48小時,無死機即可裝箱待發貨。I

4.2、SD卡啟動的難點在哪里 (SRAM、DDR、SDCard)

????????(1)、SRAM、DDR都是總線式訪問的,SRAM不需初始化既可直接使用而DDR需要初始化后才能使用,但是總之CPU可以直接和SRAM/DRAM打交道;而SD卡需要時序訪問,CPU不能直接和SD卡打交道;NorFlash讀取時可以總線式訪問,所以Norflash啟動非常簡單,可以直接啟動,但是SD/NandFlash不行。

????????(2)、以前只有NorFlash可以作為啟動介質,臺式機筆記本的BIOS就是NorFlash做的。后來三星在2440中使用了Stepping Stone的技術,讓NandFlash也可以作為啟動介質。Stepping Stone(翻譯為啟動基石)技術就是在SoC內部內置4KB的SRAM,然后開機時SoC根據OMpin判斷用戶設置的啟動方式,如果是NandFlash啟動,則SoC的啟動部分的硬件直接從外部NandFlash中讀取開頭的4KB到內部SRAM作為啟動內容。

????????(3)、啟動基石技術進一步發展,在6410芯片中得到完善,在210芯片時已經完全成熟。210中有96KB的SRAM,并且有一段iROM代碼作為BL0,BL0再去啟動BL1 (210中的BL0做的事情在2440中也有,只不過那時候是硬件自動完成的,而且體系沒有210中這么詳細)。

4.3、S5PV210的啟動過程回顧

????????(1)、210啟動首先執行內部的iROM (也就是BL0),BL0會判斷OMpin來決定從哪個設備啟動,如果啟動設備是SD卡,則BL0會從SD卡讀取前16KB (不一定是16,反正16是工作的)到SRAM中去啟動執行(這部分就是BL1,這就是steppinqstone技術)。

????????(2)、BL1執行之后剩下的就是軟件的事情了,SoC就不用再去操心了。

4.4、SD卡啟動流程(bin文件小于16KB時和大于16KB時)

????????(1)、啟動的第一種情況是整個鏡像大小小于16KB。這時候相當于我的整個鏡像作為BL1被steppingstone直接硬件加載執行了而已。

????????(2)、啟動的第二種情況就是整個鏡像大小大于16KB。 (只要大于16KB,哪怕是17KB,或者是700MB都是一樣的) 這時候就要把整個鏡像分為2部分:第一部分16KB大小,第二部分是剩下的大小。然后第一部分作為BL1啟動,負責去初始化DRAM并且將第二部分加載到DRAM中去執行 (uboot就是這樣做的)。

4.5、最重要的但是卻隱含未講的東西

????????(1)、問題:iROM究竟是怎樣讀取SD卡/NandFlash的?

????????(2)、三星在iROM中事先內置了一些代碼去初始化外部SD卡/NandFlash,并且內置了讀取各種SD卡/NandFlash的代碼在iROM中。BL0執行時就是通過調用這些device copy function來讀取外部SD卡/Nand Flash中的BL1的。

5、S5PV210的SD卡啟動詳解2

5.1、SoC支持SD卡啟動的秘密 (iROM代碼)

????????(1)、三星系列SoC支持SD卡/NandFlash啟動,主要是依靠SteppingStone技術,具體在S5PV210中支持steppingstone技術的是內部的iROM代碼。

5.2、再看iROM application note:block device copy function

5.3、扇區和塊的概念

????????(1)、早期的塊設備就是軟盤硬盤這類磁存儲設備,這種設備的存儲單元不是以字節為單位,而是以扇區為單位。磁存儲設備讀寫的最小單元就是扇區,不能只讀取或寫部分扇區。這個限制是磁存儲設備本身物理方面的原因造成的,也成為了我們編程時必須遵守的規律。

????????(2)、一個扇區有好多個字節(一般是512個字節)。早期的磁盤扇區是512字節,實際上后來的磁盤扇區可以做的比較大(譬如1024字節,譬如2048字節,譬如4096字節),但是因為原來最早是512字節,很多的軟件 (包括操作系統和文件系統)已經默認了512這個數字,因此后來的硬件雖然物理上可能支持更大的扇區,但是實際上一般還是兼容512字節扇區這種操作方法。

????????(3)、一個扇區可以看成是一個塊block (塊的概念就是:不是一個字節,是多個字節組成一個共同的操作單元塊),所以就把這一類的設備稱為塊設備。常見的塊設備有:磁存儲設備硬盤、軟盤、DVD和Flash設備(U盤、SSD、SD卡、NandFlash、NorFlash、eMMC、iNand)。

????????(4)、linux里有個mtd驅動,就是用來管理這類塊設備的。

????????(5)、磁盤和Flash以塊為單位來讀寫,就決定了我們啟動時device copy function只能以整塊為單位來讀取SD卡。

5.4、用函數指針方式調用device copy function

????????(1)、第一種方法:宏定義方式來調用。好處是簡單方便,壞處是編譯器不能幫我們做參數的靜態類型檢查。

????????(2)、第二種方法:用函數指針方式來調用。

6、S5PV210的SD卡啟動實戰1

6.1、任務:大于16KB的bin文件使用SD卡啟動

????????(1)、總體思路:將我們的代碼分為2部分:第一部分BL1小于等于16KB,第二部分為任意大小,iROM代碼執行完成后從SD卡啟動會自動讀取BL1到SRAM中執行;BL1執行時負責初始化DDR,然后手動將BL2從SD卡copy到DDR中正確位置,然后BL1遠跳轉到BL2中執行BL2。

????????(2)、細節1:程序怎么安排?程序整個分為2個文件夾BL1和BL2,各自管理各自的項目。

????????(3)、細節2:BL1中要完成:關看門狗、設置棧、開iCache、初始化DDR、從SD卡復制BL2到DDR中特定位置,跳轉執行BL2。

????????(4)、細節3:BL1在SD卡中必須從Block1開始(Block0不能用,這個是三星官方規定的),長度為16KB內,我們就定為16KB (也就是32個block);BL1理論上可以從33扇區開始,但是實際上為了安全都會留一些空扇區作為隔離,譬如可以從45扇區開始,長度由自己定(實際根據自己的BL2大小來分配長度,我們實驗時BL2非常小,因此我們定義BL2長度為16KB,也就是32扇區)。

????????(5)、細節4:DDR初始化好之后,整個DDR都可以使用了,這時在其中選擇一段長度足夠BL2的DDR空間即可。我們選0x23E00000(因為我們BL1中只初始化了DDR1,地址空間范圍是0x20000000~0x2FFFFFFF )。

6.2、代碼劃分為2部分(BL1和BL2)

????????

6.3、BL1中的重定位

????????

6.4、BL2遠跳轉

????????(1)、因為我們BL1和BL2其實是2個獨立的程序,鏈接時也是獨立分開鏈接的,所以不能像以前一樣使用ldr pc,=main這種方式來通過鏈接地址實現遠跳轉到BL2。

????????(2)、我們的解決方案是使用地址進行強制跳轉。因為我們知道BL2在內存地址0x23E00000處,所以直接去執行這個地址即可。

7、S5PV210的SD卡啟動實戰2

7.1、燒錄啟動實驗

????????

7.2、代碼分為2部分啟動(上一節講的)的缺陷

????????(1)、代碼分為2部分,這種技術叫分散加載。這種分散加載的方法可以解決問題,但是比較麻煩。

????????(2)、分散加載的缺陷:第一,代碼完全分2部分,完全獨立,代碼編寫和組織上麻煩;第二,無法讓工程項目兼容SD卡啟動和Nand啟動、NorFlash啟動等各種啟動方式。

7.3、uboot中的做法

????????(1)、第二種思路:程序代碼仍然包括BL1和BL2兩部分,但是組織形式上不分為2部分而是作為一個整體來組織。它的實現方式是:iROM啟動然后從SD卡的扇區1開始讀取16KB的BL1然后去執行BL1,BL1負責初始化DDR,然后從SD卡中讀取整個程序 (BL1+BL2) 到DDR中,然后從DDR中執行 (利用ldr pc,=main這種方式以遠跳轉從SRAM中運行的BL1跳轉到DDR中運行的BL2)。

7.4、再來分析uboot的SD卡啟動細節

????????(1)、uboot編譯好之后有200多KB,超出了16KB。uboot的組織方式就是前面16KB為BL1,剩下的部分為BL2。

????????(2)、uboot在燒錄到SD卡的時候,先截取uboot.bin的前16KB (實際腳本截取的是8KB) 燒錄到SD卡的block1~bolck32;然后將整個uboot燒錄到SD卡的某個扇區中(如49扇區)。

????????(3)、實際uboot從SD卡啟動時是這樣的:iROM先執行,根據OMpin判斷出啟動設備是SD卡,然后從SD卡的block1開始讀取16KB (8KB)到SRAM中執行BL1,BL1執行時負責初始化DDR,并且從SD卡的49扇區開始復制整個uboot到DDR中指定位置 (0x23E00000) 去備用;然后BL1繼續執行直到ldr pc,=main時BL1跳轉到DDR上的BL2中接著執行uboot的第二階段。

????????總結:uoot中的這種啟動方式比上節進的分散加載的好處在于:能夠兼容各種啟動方式。

8、解決X210開發板的軟開關按鍵問題

8.1、210開發板的軟啟動電路詳解

????????(1)、210供電需要的電壓比較穩定,而外部適配器的輸出電壓不一定那么穩定,因此板載了一個穩壓器件MP1482。這個穩壓芯片的作用就是外部適配器電壓在一定范圍內變化時穩壓芯片的輸出電壓都是5V。

????????(2)、MP1482芯片有一個EN (Enable) 引腳,這個引腳可以讓穩壓芯片輸出或關閉輸出。EN為高電平時有輸出電壓,EN引腳為低電平時穩壓芯片無輸出。

????????(3)、兩個因素可以影響EN引腳的電平:第一個是POWER按鍵 (SW1),POWER按鍵按下時EN為高電平,POWER按鍵彈起時EN為低電平;第二個是POWER_LOCK (EINT0)引腳,這個引腳為POWER_LOCK模式下高電平,則EN為高;若這個引腳為EINT0模式或者為POWER_LOCK模式但輸出為低電平,則EN為低。

????????(4)、圖中還有EINT1引腳,這個引腳的作用是用來做中斷,提供給CPU用來喚醒的。

8.2、為什么要軟啟動

????????(1)、一般的電路設計都是用撥碼開關來做電源開關的(打到一側則接通,打到另一側則關閉)。這種方式的優點是設計簡單,缺點是電路太簡單,整個主板要么有電要么沒電無法做休眠模式、低功耗模式等。

????????(2)、軟啟動電路是比較接近于實際產品的,其他開發板的硬開關其實是簡化版的,和實際產品還有差異。

8.3、開發板供電置鎖原理和分析

????????(1)、軟開關在設計時有一個置鎖電路,用EINT0(也就是GPH0_2) 引腳來控制的。

????????(2)、EINT0這個引腳是有復用設計 (兩個完全不相干的功能擠在同一個引腳上,同時我們只能讓這個引腳用于其中一種功能,這就叫復用) 的,一個是GPIO (也就是GPH0_2引腳)、一個是PS_HOLD_CONTROL。(注意:EINT0功能算是GPIO下的一個子功能)

????????(3)、PS_HOLD在Section2.4 Power Management章節下的4.10.5.8節下。

????????(4)、PS_HOLD_CONTROL寄存器 (0xE010E81C),共有3個位有用。

????????????????bit0,0表示這個引腳為GPIO功能,1表示這個引腳為PS_HOLD功能

????????????????bit9,0表示這個引腳方向為輸入,1表示這個引腳方向為輸出

????????????????bit8,0表示這個引腳輸出為低電平,1表示輸出為高電平。

????????分析:我們要使用軟啟動置鎖,則需要將bit0、8、9都置為1即可。

8.4、寫代碼+實驗驗證

????????(1)、要想讓開發板和普通的開發板一樣,一按下按鍵程序運行后即可松手不會斷電,則只要在程序的開頭部分添加代碼去置鎖開關板即可。

????????(2)、置鎖代碼的方法是:給PS_HOLD_CONTROL寄存器的bit0、8、9均寫入1即可。

? ? ? ? (3)、注意:此時開發板已經置鎖,POWER按鍵已經失效,關機時需要按下復位按鍵。

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

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

相關文章

如何解決安卓手機無法預覽pdf文件而是需要直接下載的問題

在開發中常常會遇到需要在一個應用里打開一份pdf文件并預覽,經真機調試時發現在蘋果手機上打開pdf文件能正常預覽,但在安卓手機打開時卻會需要我們下載才能預覽,無法直接預覽 為了解決這個問題,我們采用安裝pdfH5插件的方式&…

計算機三級嵌入式知識總結(一)

一、ARM的七種異常類型 1、復位異常RESET “復位異常RESET”通常是指在電子設備或系統中發生了一個意外的復位或重啟。這可能是由于硬件故障、軟件問題或其他未知的原因引起的。當設備經歷復位異常時,它可能會丟失正在進行的操作或設置,導致數據丟失或系…

LINUXZ

10.6.2 AT24C02 訪問方法 設備地址 從芯片手冊上可以知道,AT24C02 的設備地址跟它的 A2、A1、A0 引腳有關: 圖 10.36 AT24C02 設備地址引腳配置 294 / 577 打開 I2C 模塊的原理圖: 開發板配套網盤資料\04_開發板原理圖\ 04_Extend_modules\通…

SQL語句執行過程

一條 SQL 的執行過程可以大致分為以下幾個步驟: 連接器: ○ 客戶端與數據庫建立連接,并發送 SQL 語句給數據庫服務。 ○ 連接器驗證客戶端的身份和權限,確保用戶有足夠的權限執行該 SQL 語句。查詢緩存: ○ 連接器首先…

基于鷹棲息算法優化概率神經網絡PNN的分類預測 - 附代碼

基于鷹棲息算法優化概率神經網絡PNN的分類預測 - 附代碼 文章目錄 基于鷹棲息算法優化概率神經網絡PNN的分類預測 - 附代碼1.PNN網絡概述2.變壓器故障診街系統相關背景2.1 模型建立 3.基于鷹棲息優化的PNN網絡5.測試結果6.參考文獻7.Matlab代碼 摘要:針對PNN神經網絡…

Motion v5.6.7 蘋果電腦上的視頻編輯

Motion mac是一款運行在蘋果電腦上的視頻編輯軟件,它能讓您自定Final Cut Pro字幕、轉場和效果。 它可以在2D或3D空間中創建您自己的精美炫目的動畫,同時還能在您工作時提供實時反饋。廣色域支持讓你的動態圖形更顯出色光彩。3D文字功能經過優化增強&am…

01背包與完全背包學習總結

背包問題分類見下圖 參考學習點擊:代碼隨想錄01背包講解 01背包問題: 核心思路: 1、先遍歷物品個數,再遍歷背包容量。因為容量最先是最大的,往背包里放物品,所以背包容量在慢慢減少,但背包容量…

CentOS7 firewall使用(開放和禁止端口、端口轉發)

安裝 安裝命令 yum install firewalld -y 使用命令 systemctl start firewalld ##開啟防火墻systemctl stop firewalld ##關閉防火墻systemctl status firewalld ##查看防火墻狀態firewall-cmd --reload ##重啟防火墻systemctl enable firewalld ##設置開啟啟動systemctl …

共享內存原理介紹及簡單使用

每當我們執行一個程序時,對于操作系統來講就創建了一個進程,在這個過程中,伴隨著資源的分配和釋放。可以認為進程是一個程序的一次執行過程。進程的內存空間是相互獨立的,一般而言是不能相互訪問的。但很多情況下進程間需要互相通信&#xff…

上海泗博MODBUS轉PROFINET網關TS-180 網關連接LED顯示屏應用案例

項目 常州某鋼鐵公司的軋鋼車間為了更清晰地顯示當天軋鋼系統各環節的工作參數,如軋鋼的日期、鋼種、吐絲機設備運行情況等,引進了另一家為其定制的LED顯示屏。軋鋼系統各環節的設備參數通過西門子S7-1500PLC采集后,實時顯示在LED顯示屏上&am…

飛瓜數據B站丨B站UP主11月第3周榜單排行榜榜單(B站平臺)發布!

飛瓜輕數發布2023年11月13日-11月19日飛瓜數據UP主排行榜(B站平臺),通過充電數、漲粉數、成長指數、帶貨數據等維度來體現UP主賬號成長的情況,為用戶提供B站號綜合價值的數據參考,根據UP主成長情況用戶能夠快速找到運營…

Linux網絡——傳輸層

目錄 一.再談端口概念 二.UDP協議 1.UDP協議格式 2.UDP的特點 3.面向數據報 4.UDP的緩沖區 5.UDP使用注意事項 6.UDP協議在內核中的表現形式 7.基于UDP的應用層協議 三.TCP協議 1.TCP協議格式 2.TCP確認應答機制 3.超時重傳機制 4.TCP報文六位標志位 5.滑動窗口 6…

制作抖音查券返利機器人的簡易步驟

制作抖音查券返利機器人的簡易步驟 隨著社交電商的快速發展,越來越多的消費者開始通過優惠券和返利來省錢購物。而抖音作為一款廣受歡迎的短視頻平臺,也為消費者提供了一個全新的購物體驗。本文將結合微賺淘客系統,介紹如何制作一個簡易的抖…

Web3與Web3.0: Web3指的是去中心化和基于區塊鏈的網絡,Web3.0指的是鏈接或語義網絡。

目錄 Web3與Web3.0: Web3指的是去中心化和基于區塊鏈的網絡 Web3.0指的是鏈接或語義網絡。

Flutter開發實踐:用一套代碼構建多端精美應用

🏆作者簡介,黑夜開發者,CSDN領軍人物,全棧領域優質創作者?,CSDN博客專家,阿里云社區專家博主,2023年6月CSDN上海賽道top4。 🏆數年電商行業從業經驗,歷任核心研發工程師…

Python下使用requests庫遇到的問題及解決方案

每一盞燈都有一個故事……當凌晨2點我的房間燈還亮著時,那就是我與BUG的一場生死博弈。一個人靜靜地坐在電腦前不斷地寫代碼,感覺快要麻木了,好比閉關修煉一樣枯燥無味。最終當我打通任督二脈后,bug修復迎來的一片曙光。 一、問題…

clang+llvm多進程gdb調試

clangllvm多進程gdb調試 前言1. 命令行gdb2. 父進程調試3. 子進程調試4. 返回父進程 前言 在學習新增llvm的優化pass時,需要跟蹤clang及llvm的調用棧。然而llvm通過posix_spawn()創建了新進程,這使得gdb調試必須有一定的技巧了。 1. 命令行gdb 以下命…

函數式編程-Stream流筆記-三更草堂

函數式編程-Stream流 1. 概述 1.1 為什么學&#xff1f; 能夠看懂公司里的代碼 大數量下處理集合效率高 代碼可讀性高 消滅嵌套地獄 //查詢未成年作家的評分在70以上的書籍 由于數據中作家和書籍可能出現重復&#xff0c;需要進行去重 List<Book> bookList new Ar…

4G5G智能執法記錄儀在保險公司車輛保險遠程定損中的應用

4G智能執法記錄儀&#xff1a;汽車保險定損的**利器 隨著科技的不斷進步&#xff0c;越來越多的智能設備應用到日常生活中。而在車輛保險定損領域&#xff0c;4G智能執法記錄儀的出現無疑是一大**。它不僅可以實現遠程定損&#xff0c;還能實現可視化操作、打印保單以及數據融…

WCF Demo

1.WCF概述 WCF是用于構建分布式應用程序和服務的框架。它提供了用于創建和管理分布式系統的工具和庫&#xff0c;支持多種通信協議和傳輸方式&#xff0c;如HTTP、TCP、Named Pipes等。WCF基于服務的概念&#xff0c;允許開發人員定義服務契約、實現服務邏輯&#xff0c;并通過…