FreeRTOS 第二課:啟動檔案分析
1. 簡介:
對 stm32f103 工程的分析,需要從啟動檔案開始
2. 韌體庫中 stm32f103 的啟動檔案:
檔案的名字:startup_stm32f10xhd.s
前邊是段的宣告
MODULE ?cstartup ;; Forward declaration of sections. SECTION CSTACK:DATA:NOROOT(3) SECTION .intvec:CODE:NOROOT(2) EXTERN __iar_program_start EXTERN SystemInit PUBLIC __vector_table
【1】MODULE 控制指令是用來標記 modules 原始碼的開始和結束,後邊的 ?cstartup 是模組的名字,此文件的最後的 END 表明模組的結束
【2】SECTION 指令是宣告段,一個段不能同時包含 public symbol 和 pubweak symbol ,模組只有在相同的名字的模組沒有被連結進來的時候才會被連結進來。
語法格式:SECTION section:type [flag] [(align)]
align,是用於指定地址對齊到 2^align,他的取值是 0 到 30
flag,取值NOROOT、ROOT、REORDER、NOREORDER,預設是ROOT,NOROOT表示如果這個段中的符號沒有被引用,將會被聯結器捨棄,即可被優化。ROOT表示不可被優化。REORDER表示開始一個新的名字是 section 的段(section),NOREORDER表示開始一個新的名字為 section 的片段(fragment),多個片段組成一個段(section)
type,memory 的型別,取值是 CODE、CONST、DATA
section,段的名字
【3】EXTERN 用匯入其他模組的 symbol(符號)
【4】PUBLIC 匯出 symbol(符號)
【1】DATA 表示下邊中的標籤是 32 位的標籤,THUMB 表示下邊的標籤是 16 位的標籤,所謂的標籤是 地址的別名,不佔用程式碼空間,給編譯器看的DATA __vector_table DCD sfe(CSTACK) DCD Reset_Handler ; Reset Handler DCD NMI_Handler ; NMI Handler DCD HardFault_Handler ; Hard Fault Handler DCD MemManage_Handler ; MPU Fault Handler DCD BusFault_Handler ; Bus Fault Handler DCD UsageFault_Handler ; Usage Fault Handler DCD 0 ; Reserved DCD 0 ; Reserved DCD 0 ; Reserved DCD 0 ; Reserved DCD SVC_Handler ; SVCall Handler DCD DebugMon_Handler ; Debug Monitor Handler DCD 0 ; Reserved DCD PendSV_Handler ; PendSV Handler DCD SysTick_Handler ; SysTick Handler ; External Interrupts DCD WWDG_IRQHandler ; Window Watchdog DCD PVD_IRQHandler ; PVD through EXTI Line detect DCD TAMPER_IRQHandler ; Tamper DCD RTC_IRQHandler ; RTC DCD FLASH_IRQHandler ; Flash DCD RCC_IRQHandler ; RCC DCD EXTI0_IRQHandler ; EXTI Line 0 DCD EXTI1_IRQHandler ; EXTI Line 1 DCD EXTI2_IRQHandler ; EXTI Line 2 DCD EXTI3_IRQHandler ; EXTI Line 3 DCD EXTI4_IRQHandler ; EXTI Line 4 DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2 DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3 DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4 DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5 DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6 DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7 DCD ADC1_2_IRQHandler ; ADC1 & ADC2 DCD USB_HP_CAN1_TX_IRQHandler ; USB High Priority or CAN1 TX DCD USB_LP_CAN1_RX0_IRQHandler ; USB Low Priority or CAN1 RX0 DCD CAN1_RX1_IRQHandler ; CAN1 RX1 DCD CAN1_SCE_IRQHandler ; CAN1 SCE DCD EXTI9_5_IRQHandler ; EXTI Line 9..5 DCD TIM1_BRK_IRQHandler ; TIM1 Break DCD TIM1_UP_IRQHandler ; TIM1 Update DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare DCD TIM2_IRQHandler ; TIM2 DCD TIM3_IRQHandler ; TIM3 DCD TIM4_IRQHandler ; TIM4 DCD I2C1_EV_IRQHandler ; I2C1 Event DCD I2C1_ER_IRQHandler ; I2C1 Error DCD I2C2_EV_IRQHandler ; I2C2 Event DCD I2C2_ER_IRQHandler ; I2C2 Error DCD SPI1_IRQHandler ; SPI1 DCD SPI2_IRQHandler ; SPI2 DCD USART1_IRQHandler ; USART1 DCD USART2_IRQHandler ; USART2 DCD USART3_IRQHandler ; USART3 DCD EXTI15_10_IRQHandler ; EXTI Line 15..10 DCD RTCAlarm_IRQHandler ; RTC Alarm through EXTI Line DCD USBWakeUp_IRQHandler ; USB Wakeup from suspend DCD TIM8_BRK_IRQHandler ; TIM8 Break DCD TIM8_UP_IRQHandler ; TIM8 Update DCD TIM8_TRG_COM_IRQHandler ; TIM8 Trigger and Commutation DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare DCD ADC3_IRQHandler ; ADC3 DCD FSMC_IRQHandler ; FSMC DCD SDIO_IRQHandler ; SDIO DCD TIM5_IRQHandler ; TIM5 DCD SPI3_IRQHandler ; SPI3 DCD UART4_IRQHandler ; UART4 DCD UART5_IRQHandler ; UART5 DCD TIM6_IRQHandler ; TIM6 DCD TIM7_IRQHandler ; TIM7 DCD DMA2_Channel1_IRQHandler ; DMA2 Channel1 DCD DMA2_Channel2_IRQHandler ; DMA2 Channel2 DCD DMA2_Channel3_IRQHandler ; DMA2 Channel3 DCD DMA2_Channel4_5_IRQHandler ; DMA2 Channel4 & Channel5 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
【2】 DCD 是資料定義或者 重定位指令,為的是定義一個值,或者保留 memory,DCD 別名是 DC32,用於宣告一個 32 位的常量,這部分是中斷向量表的內容,需要注意的是,他們的順序不能改變,此部分會放到 flash 的最開始部分,當系統啟動的時候會載入前另個地址,第一個地址是 c 程式的棧的棧頂地址,第二個地址是向量表的開始地址,中斷髮生時會根據向量表的首地址和偏移量來找到程式的入口
【3】sfe 指令作用是返回棧的結尾,因為棧的增長方向是反方向的
;;
;; Default interrupt handlers.
;;
THUMB
PUBWEAK Reset_Handler
SECTION .text:CODE:REORDER(2)
Reset_Handler
LDR R0, =SystemInit
BLX R0
LDR R0, =__iar_program_start
BX R0
PUBWEAK NMI_Handler
SECTION .text:CODE:REORDER(1)
NMI_Handler
B NMI_Handler
PUBWEAK HardFault_Handler
SECTION .text:CODE:REORDER(1)
HardFault_Handler
B HardFault_Handler
PUBWEAK MemManage_Handler
SECTION .text:CODE:REORDER(1)
MemManage_Handler
B MemManage_Handler
PUBWEAK BusFault_Handler
SECTION .text:CODE:REORDER(1)
BusFault_Handler
B BusFault_Handler
PUBWEAK UsageFault_Handler
SECTION .text:CODE:REORDER(1)
UsageFault_Handler
B UsageFault_Handler
PUBWEAK SVC_Handler
SECTION .text:CODE:REORDER(1)
SVC_Handler
B SVC_Handler
PUBWEAK DebugMon_Handler
SECTION .text:CODE:REORDER(1)
DebugMon_Handler
B DebugMon_Handler
PUBWEAK PendSV_Handler
SECTION .text:CODE:REORDER(1)
PendSV_Handler
B PendSV_Handler
PUBWEAK SysTick_Handler
SECTION .text:CODE:REORDER(1)
SysTick_Handler
B SysTick_Handler
PUBWEAK WWDG_IRQHandler
SECTION .text:CODE:REORDER(1)
WWDG_IRQHandler
B WWDG_IRQHandler
PUBWEAK PVD_IRQHandler
SECTION .text:CODE:REORDER(1)
PVD_IRQHandler
B PVD_IRQHandler
PUBWEAK TAMPER_IRQHandler
SECTION .text:CODE:REORDER(1)
TAMPER_IRQHandler
B TAMPER_IRQHandler
PUBWEAK RTC_IRQHandler
SECTION .text:CODE:REORDER(1)
RTC_IRQHandler
B RTC_IRQHandler
PUBWEAK FLASH_IRQHandler
SECTION .text:CODE:REORDER(1)
FLASH_IRQHandler
B FLASH_IRQHandler
PUBWEAK RCC_IRQHandler
SECTION .text:CODE:REORDER(1)
RCC_IRQHandler
B RCC_IRQHandler
PUBWEAK EXTI0_IRQHandler
SECTION .text:CODE:REORDER(1)
EXTI0_IRQHandler
B EXTI0_IRQHandler
PUBWEAK EXTI1_IRQHandler
SECTION .text:CODE:REORDER(1)
EXTI1_IRQHandler
B EXTI1_IRQHandler
PUBWEAK EXTI2_IRQHandler
SECTION .text:CODE:REORDER(1)
EXTI2_IRQHandler
B EXTI2_IRQHandler
PUBWEAK EXTI3_IRQHandler
SECTION .text:CODE:REORDER(1)
EXTI3_IRQHandler
B EXTI3_IRQHandler
PUBWEAK EXTI4_IRQHandler
SECTION .text:CODE:REORDER(1)
EXTI4_IRQHandler
B EXTI4_IRQHandler
PUBWEAK DMA1_Channel1_IRQHandler
SECTION .text:CODE:REORDER(1)
DMA1_Channel1_IRQHandler
B DMA1_Channel1_IRQHandler
PUBWEAK DMA1_Channel2_IRQHandler
SECTION .text:CODE:REORDER(1)
DMA1_Channel2_IRQHandler
B DMA1_Channel2_IRQHandler
PUBWEAK DMA1_Channel3_IRQHandler
SECTION .text:CODE:REORDER(1)
DMA1_Channel3_IRQHandler
B DMA1_Channel3_IRQHandler
PUBWEAK DMA1_Channel4_IRQHandler
SECTION .text:CODE:REORDER(1)
DMA1_Channel4_IRQHandler
B DMA1_Channel4_IRQHandler
PUBWEAK DMA1_Channel5_IRQHandler
SECTION .text:CODE:REORDER(1)
DMA1_Channel5_IRQHandler
B DMA1_Channel5_IRQHandler
PUBWEAK DMA1_Channel6_IRQHandler
SECTION .text:CODE:REORDER(1)
DMA1_Channel6_IRQHandler
B DMA1_Channel6_IRQHandler
PUBWEAK DMA1_Channel7_IRQHandler
SECTION .text:CODE:REORDER(1)
DMA1_Channel7_IRQHandler
B DMA1_Channel7_IRQHandler
PUBWEAK ADC1_2_IRQHandler
SECTION .text:CODE:REORDER(1)
ADC1_2_IRQHandler
B ADC1_2_IRQHandler
PUBWEAK USB_HP_CAN1_TX_IRQHandler
SECTION .text:CODE:REORDER(1)
USB_HP_CAN1_TX_IRQHandler
B USB_HP_CAN1_TX_IRQHandler
PUBWEAK USB_LP_CAN1_RX0_IRQHandler
SECTION .text:CODE:REORDER(1)
USB_LP_CAN1_RX0_IRQHandler
B USB_LP_CAN1_RX0_IRQHandler
PUBWEAK CAN1_RX1_IRQHandler
SECTION .text:CODE:REORDER(1)
CAN1_RX1_IRQHandler
B CAN1_RX1_IRQHandler
PUBWEAK CAN1_SCE_IRQHandler
SECTION .text:CODE:REORDER(1)
CAN1_SCE_IRQHandler
B CAN1_SCE_IRQHandler
PUBWEAK EXTI9_5_IRQHandler
SECTION .text:CODE:REORDER(1)
EXTI9_5_IRQHandler
B EXTI9_5_IRQHandler
PUBWEAK TIM1_BRK_IRQHandler
SECTION .text:CODE:REORDER(1)
TIM1_BRK_IRQHandler
B TIM1_BRK_IRQHandler
PUBWEAK TIM1_UP_IRQHandler
SECTION .text:CODE:REORDER(1)
TIM1_UP_IRQHandler
B TIM1_UP_IRQHandler
PUBWEAK TIM1_TRG_COM_IRQHandler
SECTION .text:CODE:REORDER(1)
TIM1_TRG_COM_IRQHandler
B TIM1_TRG_COM_IRQHandler
PUBWEAK TIM1_CC_IRQHandler
SECTION .text:CODE:REORDER(1)
TIM1_CC_IRQHandler
B TIM1_CC_IRQHandler
PUBWEAK TIM2_IRQHandler
SECTION .text:CODE:REORDER(1)
TIM2_IRQHandler
B TIM2_IRQHandler
PUBWEAK TIM3_IRQHandler
SECTION .text:CODE:REORDER(1)
TIM3_IRQHandler
B TIM3_IRQHandler
PUBWEAK TIM4_IRQHandler
SECTION .text:CODE:REORDER(1)
TIM4_IRQHandler
B TIM4_IRQHandler
PUBWEAK I2C1_EV_IRQHandler
SECTION .text:CODE:REORDER(1)
I2C1_EV_IRQHandler
B I2C1_EV_IRQHandler
PUBWEAK I2C1_ER_IRQHandler
SECTION .text:CODE:REORDER(1)
I2C1_ER_IRQHandler
B I2C1_ER_IRQHandler
PUBWEAK I2C2_EV_IRQHandler
SECTION .text:CODE:REORDER(1)
I2C2_EV_IRQHandler
B I2C2_EV_IRQHandler
PUBWEAK I2C2_ER_IRQHandler
SECTION .text:CODE:REORDER(1)
I2C2_ER_IRQHandler
B I2C2_ER_IRQHandler
PUBWEAK SPI1_IRQHandler
SECTION .text:CODE:REORDER(1)
SPI1_IRQHandler
B SPI1_IRQHandler
PUBWEAK SPI2_IRQHandler
SECTION .text:CODE:REORDER(1)
SPI2_IRQHandler
B SPI2_IRQHandler
PUBWEAK USART1_IRQHandler
SECTION .text:CODE:REORDER(1)
USART1_IRQHandler
B USART1_IRQHandler
PUBWEAK USART2_IRQHandler
SECTION .text:CODE:REORDER(1)
USART2_IRQHandler
B USART2_IRQHandler
PUBWEAK USART3_IRQHandler
SECTION .text:CODE:REORDER(1)
USART3_IRQHandler
B USART3_IRQHandler
PUBWEAK EXTI15_10_IRQHandler
SECTION .text:CODE:REORDER(1)
EXTI15_10_IRQHandler
B EXTI15_10_IRQHandler
PUBWEAK RTCAlarm_IRQHandler
SECTION .text:CODE:REORDER(1)
RTCAlarm_IRQHandler
B RTCAlarm_IRQHandler
PUBWEAK USBWakeUp_IRQHandler
SECTION .text:CODE:REORDER(1)
USBWakeUp_IRQHandler
B USBWakeUp_IRQHandler
PUBWEAK TIM8_BRK_IRQHandler
SECTION .text:CODE:REORDER(1)
TIM8_BRK_IRQHandler
B TIM8_BRK_IRQHandler
PUBWEAK TIM8_UP_IRQHandler
SECTION .text:CODE:REORDER(1)
TIM8_UP_IRQHandler
B TIM8_UP_IRQHandler
PUBWEAK TIM8_TRG_COM_IRQHandler
SECTION .text:CODE:REORDER(1)
TIM8_TRG_COM_IRQHandler
B TIM8_TRG_COM_IRQHandler
PUBWEAK TIM8_CC_IRQHandler
SECTION .text:CODE:REORDER(1)
TIM8_CC_IRQHandler
B TIM8_CC_IRQHandler
PUBWEAK ADC3_IRQHandler
SECTION .text:CODE:REORDER(1)
ADC3_IRQHandler
B ADC3_IRQHandler
PUBWEAK FSMC_IRQHandler
SECTION .text:CODE:REORDER(1)
FSMC_IRQHandler
B FSMC_IRQHandler
PUBWEAK SDIO_IRQHandler
SECTION .text:CODE:REORDER(1)
SDIO_IRQHandler
B SDIO_IRQHandler
PUBWEAK TIM5_IRQHandler
SECTION .text:CODE:REORDER(1)
TIM5_IRQHandler
B TIM5_IRQHandler
PUBWEAK SPI3_IRQHandler
SECTION .text:CODE:REORDER(1)
SPI3_IRQHandler
B SPI3_IRQHandler
PUBWEAK UART4_IRQHandler
SECTION .text:CODE:REORDER(1)
UART4_IRQHandler
B UART4_IRQHandler
PUBWEAK UART5_IRQHandler
SECTION .text:CODE:REORDER(1)
UART5_IRQHandler
B UART5_IRQHandler
PUBWEAK TIM6_IRQHandler
SECTION .text:CODE:REORDER(1)
TIM6_IRQHandler
B TIM6_IRQHandler
PUBWEAK TIM7_IRQHandler
SECTION .text:CODE:REORDER(1)
TIM7_IRQHandler
B TIM7_IRQHandler
PUBWEAK DMA2_Channel1_IRQHandler
SECTION .text:CODE:REORDER(1)
DMA2_Channel1_IRQHandler
B DMA2_Channel1_IRQHandler
PUBWEAK DMA2_Channel2_IRQHandler
SECTION .text:CODE:REORDER(1)
DMA2_Channel2_IRQHandler
B DMA2_Channel2_IRQHandler
PUBWEAK DMA2_Channel3_IRQHandler
SECTION .text:CODE:REORDER(1)
DMA2_Channel3_IRQHandler
B DMA2_Channel3_IRQHandler
PUBWEAK DMA2_Channel4_5_IRQHandler
SECTION .text:CODE:REORDER(1)
DMA2_Channel4_5_IRQHandler
B DMA2_Channel4_5_IRQHandler
END
【1】THUMB 表明下邊是 thumb 指令
【2】Reset_Handler 在開機或者復位的時候執行
R0 = SystemInit
跳轉到 SystemInit 函式,並將處理器切換到 thumb 狀態
R0 = __iar_program_start
跳轉到 __iar_program_start 函式,狀態也是切換到 thumb 狀態
【3】此處的 __iar_program_start 在程式中找不到是因為它已經被封裝到了 IAR 自帶的C庫啟動程式碼中了,當我們編譯的時候,在專案屬性的 linker,library中勾選了 Automatic runtime library ,就告訴了編譯器用庫中的 __iar_program_start ,具體實現了什麼,我們可以檢視 IAR 工具為我們提供的原始碼,具體路徑在 IAR 安裝目錄下的 arm\src\lib\thumb ,我們可以看到有的檔案分別的提供了 彙編程式碼和 c 程式碼。
其中的 cstartup_M.s 檔案中有
#pragma required=__vector_table
void __iar_program_start( void )
{
__iar_init_core();
__iar_init_vfp();
__cmain();
}
【1】此段的程式中前兩個函式是弱函式,在工程共沒有定義
【2】__cmain 函式作用是初始化段和底層硬體,最後呼叫main
至此,庫檔案中的啟動檔案先分析到這裡
3. FreeRTOS 中的彙編程式碼:
當 FreeRTOS 和 stm32 移植好後,會用到 FreeRTOS 中的原始碼檔案 portasm.s 中的函式
xPortPendSVHandler 函式:
xPortPendSVHandler:
mrs r0, psp
isb
ldr r3, =pxCurrentTCB /* 獲取當前任務的控制塊(TCB)指標. */
ldr r2, [r3]
stmdb r0!, {r4-r11} /* 儲存 R4-R11 到該任務的堆疊. */
str r0, [r2] /* 將最後的堆疊指標儲存到任務控制塊的 pxTopOfStack. */
stmdb sp!, {r3, r14}
mov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY /* 關閉中斷 */
msr basepri, r0
dsb
isb
bl vTaskSwitchContext /* 切換任務上下文,pxCurrentTCB 已指向新的任務 */
mov r0, #0
msr basepri, r0
ldmia sp!, {r3, r14}
ldr r1, [r3] /* 恢復新任務的上下文到各暫存器 */
ldr r0, [r1] /* The first item in pxCurrentTCB is the task top of stack. */
ldmia r0!, {r4-r11} /* Pop the registers. */
msr psp, r0
isb
bx r14
【1】這個函式的功能是請求切換任務
【2】任務切換的示意圖如下:
vPortSVCHandler 函式:直接切換任務用於vPortStartFirstTask第一次啟動任務時初始化堆疊和各暫存器
vPortSVCHandler:
/* Get the location of the current TCB. */
ldr r3, =pxCurrentTCB
ldr r1, [r3]
ldr r0, [r1]
/* Pop the core registers. */
ldmia r0!, {r4-r11}
msr psp, r0
isb
mov r0, #0
msr basepri, r0
orr r14, r14, #13
bx r14
函式:啟動第一個任務的彙編實現
vPortStartFirstTask
/* Use the NVIC offset register to locate the stack. */
ldr r0, =0xE000ED08 /* 向量表偏移量暫存器 (VTOR) */
ldr r0, [r0]
ldr r0, [r0]
/* Set the msp back to the start of the stack. */
msr msp, r0 /* 將堆疊地址儲存到主堆疊指標msp中 */
/* Call SVC to start the first task, ensuring interrupts are enabled. */
cpsie i /* 觸發SVC軟中斷,由vPortSVCHandler()完成第一個任務的具體切換工作 */
cpsie f
dsb
isb
svc 0
【1】此部分參照 (偉研科技 http://www.gzweiyan.com) 資料
【2】核心排程器啟動的流程如下:相關推薦
FreeRTOS 第二課:啟動檔案分析
1. 簡介: 對 stm32f103 工程的分析,需要從啟動檔案開始 2. 韌體庫中 stm32f103 的啟動檔案: 檔案的名字:startup_stm32f10xhd.s 前邊是段的宣告 MODULE ?cstartup
第二課:啟動一個新的 Activity(基於AndroidStudio3.2)
完成上一課的學習後,我們已構建了一個應用,它可以顯示一個 Activity(單一螢幕)並帶有一個文字欄位和一個按鈕。在本課中,您將向 MainActivity 新增一些程式碼,這些程式碼可在使用者點按 Send 時啟動一個新的 Activity 來顯示訊息。 一
Ng第二課:單變量線性回歸(Linear Regression with One Variable)
dll oba vcf 更多 dba cfq dpf gis avd 二、單變量線性回歸(Linear Regression with One Variable) 2.1 模型表示 2.2 代價函數 2.3 代價函數的直觀理解 2.4 梯度下降
python 自學第二課: 使用BeautifulSoup抓取鏈接 正則表達式
find sof stdout mpi new page 正則 ges 效果 python 自學第二課: 使用BeautifulSoup抓取鏈接 正則表達式 具體的查看BeautifulSoup文檔(根據自己的安裝的版本查看對應文檔) 文檔鏈接https://www.cr
第二課:筆
http log roo ref get href sting logs cnblogs http://www.52investing.com/jpkecheng/payRoom_31_109.html 第二課:筆
學習 Python 第二課:用戶交互程序
用戶交互程序Author:uljfangE-mail:[email protected]
第二課:第一講Linux操作系統及常用命令
d第二課:第一講Linux操作系統及常用命令1.liunx中“X”表示圖像顯示協議X-window有三種:Gnome,KDE,Xface2.windows->.dll(dynamic link library)liunx->.so (shared object)3.認證:authenticatio
第二課:第3講Linux根文件系統詳解
IV oot test 訪問 自己 偽文件系統 長度 -a .so 第二課:第3講Linux根文件系統詳解1.file 命令及其用法2.ELF:可執行文件的存儲格式,常見的linux可執行二進制文件格式windows :PEliunx:ELF3.文件系統rootfs:根文件
第二課:第4講02_04_Linux文件管理命令詳解
cfile hive dir 文件管理命令 linux文件管理 direct sta director 屬性。 第二課:第4講02_04_Linux文件管理命令詳解1.cp copycp SRCFILE DSET cp file1 f2 f3一個文件到一個文件多個文件到一個
Pytorch第二課:package-torch(2) 之數學操作
微博:https://weibo.com/wangxiaocaoai/profile?rightmod=1&wvr=6&mod=personinfo 微信公眾號:搜尋"AI躁動街" 本節要點: 1 逐點計算操作 2 縮減操作 3 比較操作 4 其
jdbc篇第5課:properties檔案和Properties類
這節課我們來學習一種新的檔案和一個新的類 properties檔案: 特點: 純文字 每一行都是 xxx=yyy的形式,類似鍵值對 常被用來當做配置檔案 Properties類:
golang語言學習第二課:變數型別及常量與列舉
go語言的變數型別: bool (true為0,false不等於0), string int 分好多種int,有點頭暈,但用預設的int就足夠了,根據機器判斷,是32位的用int32,是64位的用int64. byte, 又是uint8的別名。 rune(類似char,但是
人工智慧第二課:認知服務和機器人框架探祕
人工智慧第二課:認知服務和機器人框架探祕 這是《人工智慧系列筆記》的第二篇,我利用週六下午完成課程學習。這一方面是因為內容屬於入門級,並且之前我已經對認知服務和機器人框架比較熟悉。 但是學習這門課程還是很有收穫,這篇筆記時特別加了"探祕"兩個字,這是因為他不僅僅是介紹
~雜記(1):makefile檔案分析
1、makefile 檔案分析(部分資訊,做出替換修改)。 2、相關注釋資訊作為經驗交流點。 3、如有註釋錯誤的請指正。 # = 是最基本的賦值 # := 是覆蓋之前的值 # ?= 是如果沒有被賦值過就賦予等號後面的值 # += 是新增等號後面的值 #c編譯器 CC=gcc #C+
鬱金香驅動學習>第二課:為驅動新增解除安裝功能
//通過這個buildchk_w2K_x86.log檔案可以查看出錯資訊 //為驅動新增解除安裝功能 #include <ntddk.h> //定義個INITCODE巨集,這個巨集表示 初始化的時候載入記憶體,然後可以從記憶體中解除安裝掉 #define INITCODE code_
第二課:程式結構化與自定義函式
目標: 學會寫matlab指令碼。 編寫結構化程式。 編寫使用者自定義函式。 一、編寫matlab指令碼 MATLAB Script: 一個檔案包含一系列matlab命令 類似於c/c++程式 指令碼儲存為<file>.m檔案,這樣就可以執行這樣以.
javaweb基礎第二課:xml詳解
這節課我們來講講xml是什麼以及它的作用。 什麼是 XML? XML 指可擴充套件標記語言(EXtensible Markup Language) XML 是一種標記語言,很類似 HTML XML 的設計宗旨是傳輸資料,而
第二課:jquery查詢節點詳解
這節課我們重點學習jquery查詢元素 document.write("<script src='jquery1.9.js'></script>"); /** * DOM樹的元素結點就是各個標籤 &nbs
第二課:js陣列
這節課來學js的陣列,跟著文件學。 //這個用來寫陣列相關教學 //陣列的概念就不說了,說下使用就行 /** * 陣列的建立: * 1. var arr = new Array(); * 2. var arr =
java8第二課:接口裡可以寫什麼
這節課我們來講講java8裡介面可以寫什麼,再次強調,這種語法只在jdk1.8以上有效。 public class Java8InterfaceTeach { public static void main(String