1. 程式人生 > >FreeRTOS 第二課:啟動檔案分析

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(符號)

        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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
【1】DATA 表示下邊中的標籤是 32 位的標籤,THUMB 表示下邊的標籤是 16 位的標籤,所謂的標籤是 地址的別名,不佔用程式碼空間,給編譯器看的

【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篇第5properties檔案和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