Ⅰ 如何給linux安裝新內核
一、獲取內核源碼
二、解壓內核源碼
首先以root帳號登錄,然後進入/usr/src子目錄。如果用戶在安裝Linux時,安裝了內核的源代碼,則會發現一個linux-x.y.z的子目錄。該目錄下存放著內核x.y.z的源代碼。此外,還會發現一個指向該目錄的鏈接linux。刪除該連接,然後將新內核的源文件拷貝到/usr/src目錄中,並解壓:
#tarzxvfLinux-2.3.14.tar.gz
文件釋放成功後,在/usr/src目錄下會生成一個linux子目錄。其中包含了內核2.3.14的全部源代碼。將/usr/include/asm、/usr/inlude/linux、/usr/include/scsi鏈接到/usr/src/linux/include目錄下的對應目錄中。
#cd/usr/include
#rm-Rfasmlinux
#ln-s/usr/src/linux/include/asm-i386asm
#ln-s/usr/src/linux/include/linuxlinux
#ln-s/usr/src/linux/include/scsiscsi
刪除源代碼目錄中殘留的.o文件和其它從屬文件。
#cd/usr/src/linux
#makemrproper
三.增量補丁
有時不需要完全重新安裝,只需打增量補丁,類似升級,在內核源碼樹根目錄運行:
patch-p1<../patch-x.y.z
四.內核源碼樹目錄:
arch:包含和硬體體系結構相關的代碼,每種平台佔一個相應基啟的目錄。和32位PC相關的代碼存放在i386目錄下,其中比較重要的包括kernel(內核核心部分)、mm(內存管理)、math-emu(浮點單元模擬)、lib(硬體相關工具函數)、boot(引導程序)、pci(PCI匯流排)和power(CPU相關狀態)。
block:部分塊設備驅動程序。
crypto:常用加密和散列演算法(如AES、SHA等),還有一些壓縮和CRC校驗演算法。
Documentation:關於內核各部分的通用解釋和注釋。
drivers:設備驅動程序,每個不同的驅動占亂明用一個子目錄。
fs:各種支持的文件系統,如ext、fat、ntfs等。
include:頭文件。其中,和系統相關的頭文件被放置在linux子目錄下。
init:內核初始化代碼(注意不是系統引導代碼)。
ipc:進程間通信的代碼。
kernel:內核的最核心部分,包括進程調度、定時器等,和平台相關的一部分代碼放在arch/*/kernel目錄下。
lib:庫文件代碼。
mm:內存管理代碼,和平台相關的一部分代碼放在arch/*/mm目錄下。
net:網路相關代碼,實現了各種常見的網路協議。
scripts:用於配置內核文件的腳本文件。
security:主要是一個SELinux的模塊。
sound:常用音頻設備的驅動程序等。
usr:實現了一個cpio。
在i386體系下,系統引導將從arch/i386/kernel/head.s開始執行,並進而轉移到init/main.c中的main()函數初始化內核。
五.配置內核
#cd/usr/src/linux
內核配置方法有三種:
(1)命令行:makeconfig
(2)菜單模式的配置界面:makemenuconfig
(3)Xwindow:makexconfig
Linux的內核配置程序提供了一系列配置選項。對於每一個配置選項,用戶可以回答"y"、"m"或"n"。其中"y"表示將相應特性的支持或設備驅動程序編譯進內核;"m"表示將相應特性的支持或設備驅動程序編譯成可載入模塊,在需要時,可由系統或用戶自行加入到內核中去;"n"表示內核不提供相應特性或驅動程序的支持。由於內核的配置選項非常多,本文只介紹一些比較重要的選項。
1、Codematurityleveloptions(代碼成熟度選項)
Promptfordevelopmentand/orincompletecode/drivers(CONFIG_EXPERIMENTAL)[N/y/?]如果用戶想要使用還處於測試階段的代碼或驅搏陪如動,可以選擇「y」。如果想編譯出一個穩定的內核,則要選擇「n」。
2、Processortypeandfeatures(處理器類型和特色)
(1)、Processorfamily(386,486/Cx486,586/K5/5x86/6x86,Pentium/K6/TSC,PPro/6x86MX)[PPro/6x86MX]選擇處理器類型,預設為Ppro/6x86MX。
(2)、MaximumPhysicalMemory(1GB,2GB)[1GB]內核支持的最大內存數,預設為1G。
(3)、Mathemulation(CONFIG_MATH_EMULATION)[N/y/?]協處理器模擬,預設為不模擬。
(4)、MTRR(MemoryTypeRangeRegister)support(CONFIG_MTRR)[N/y/?]
選擇該選項,系統將生成/proc/mtrr文件對MTRR進行管理,供Xserver使用。
(5)、Symmetricmulti-processingsupport(CONFIG_SMP)[Y/n/?]選擇「y」,內核將支持對稱多處理器。
3、Loadablemolesupport(可載入模塊支持)
(1)、Enableloadablemolesupport(CONFIG_MODULES)[Y/n/?]選擇「y」,內核將支持載入模塊。
(2)、Kernelmoleloader(CONFIG_KMOD)[N/y/?]選擇「y」,內核將自動載入那些可載入模塊,否則需要用戶手工載入。
4、Generalsetup(一般設置)
(1)、Networkingsupport(CONFIG_NET)[Y/n/?]該選項設置是否在內核中提供網路支持。
(2)、PCIsupport(CONFIG_PCI)[Y/n/?]該選項設置是否在內核中提供PCI支持。
(3)、PCIaccessmode(BIOS,Direct,Any)[Any]該選項設置Linux探測PCI設備的方式。選擇「BIOS」,Linux將使用BIOS;選擇「Direct」,Linux將不通過BIOS;選擇「Any」,Linux將直接探測PCI設備,如果失敗,再使用BIOS。
(4)Parallelportsupport(CONFIG_PARPORT)[N/y/m/?]選擇「y」,內核將支持平行口。
5、PlugandPlayconfiguration(即插即用設備支持)
(1)、PlugandPlaysupport(CONFIG_PNP)[Y/m/n/?]選擇「y」,內核將自動配置即插即用設備。
(2)、ISAPlugandPlaysupport(CONFIG_ISAPNP)[Y/m/n/?]選擇「y」,內核將自動配置基於ISA匯流排的即插即用設備。
6、Blockdevices(塊設備)
(1)、NormalPCfloppydisksupport(CONFIG_BLK_DEV_FD)[Y/m/n/?]選擇「y」,內核將提供對軟盤的支持。
(2)、EnhancedIDE/MFM/RLLdisk/cdrom/tape/floppysupport(CONFIG_BLK_DEV_IDE)[Y/m/n/?]選擇「y」,內核將提供對增強IDE硬碟、CDROM和磁帶機的支持。
7、Networkingoptions(網路選項)
(1)、Packetsocket(CONFIG_PACKET)[Y/m/n/?]選擇「y」,一些應用程序將使用Packet協議直接同網路設備通訊,而不通過內核中的其它中介協議。
(2)、Networkfirewalls(CONFIG_FIREWALL)[N/y/?]選擇「y」,內核將支持防火牆。
(3)、TCP/IPnetworking(CONFIG_INET)[Y/n/?]選擇「y」,內核將支持TCP/IP協議。
(4)TheIPXprotocol(CONFIG_IPX)[N/y/m/?]選擇「y」,內核將支持IPX協議。
(5)、AppletalkDDP(CONFIG_ATALK)[N/y/m/?]選擇「y」,內核將支持AppletalkDDP協議。
8、SCSIsupport(SCSI支持)
如果用戶要使用SCSI設備,可配置相應選項。
9、Networkdevicesupport(網路設備支持)
Networkdevicesupport(CONFIG_NETDEVICES)[Y/n/?]選擇「y」,內核將提供對網路驅動程序的支持。
10、Ethernet(10or100Mbit)(10M或100M乙太網)
在該項設置中,系統提供了許多網卡驅動程序,用戶只要選擇自己的網卡驅動就可以了。此外,用戶還可以根據需要,在內核中加入對FDDI、PPP、SLIP和無線LAN(WirelessLAN)的支持。
11、Characterdevices(字元設備)
(1)、Virtualterminal(CONFIG_VT)[Y/n/?]選擇「y」,內核將支持虛擬終端。
(2)、(CONFIG_VT_CONSOLE)[Y/n/?]
選擇「y」,內核可將一個虛擬終端用作系統控制台。
(3)、Standard/generic(mb)serialsupport(CONFIG_SERIAL)[Y/m/n/?]
選擇「y」,內核將支持串列口。
(4)、Supportforconsoleonserialport(CONFIG_SERIAL_CONSOLE)[N/y/?]
選擇「y」,內核可將一個串列口用作系統控制台。
12、Mice(滑鼠)
PS/2mouse(aka"auxiliarydevice")support(CONFIG_PSMOUSE)[Y/n/?]如果用戶使用的是PS/2滑鼠,則該選項應該選擇「y」。
13、Filesystems(文件系統)
(1)、Quotasupport(CONFIG_QUOTA)[N/y/?]選擇「y」,內核將支持磁碟限額。
(2)、Kernelautomountersupport(CONFIG_AUTOFS_FS)[Y/m/n/?]選擇「y」,內核將提供對automounter的支持,使系統在啟動時自動mount遠程文件系統。
(3)、DOSFATfssupport(CONFIG_FAT_FS)[N/y/m/?]選擇「y」,內核將支持DOSFAT文件系統。
(4)、ISO9660CDROMfilesystemsupport(CONFIG_ISO9660_FS)[Y/m/n/?]
選擇「y」,內核將支持ISO9660CDROM文件系統。
(5)、NTFSfilesystemsupport(readonly)(CONFIG_NTFS_FS)[N/y/m/?]
選擇「y」,用戶就可以以只讀方式訪問NTFS文件系統。
(6)、/procfilesystemsupport(CONFIG_PROC_FS)[Y/n/?]/proc是存放Linux系統運行狀態的虛擬文件系統,該項必須選擇「y」。
(7)、Secondextendedfssupport(CONFIG_EXT2_FS)[Y/m/n/?]EXT2是Linux的標准文件系統,該項也必須選擇「y」。
14、NetworkFileSystems(網路文件系統)
(1)、NFSfilesystemsupport(CONFIG_NFS_FS)[Y/m/n/?]選擇「y」,內核將支持NFS文件系統。
(2)、SMBfilesystemsupport(tomountWfWsharesetc.)(CONFIG_SMB_FS)
選擇「y」,內核將支持SMB文件系統。
(3)、NCPfilesystemsupport(tomountNetWarevolumes)(CONFIG_NCP_FS)
選擇「y」,內核將支持NCP文件系統。
15、PartitionTypes(分區類型)
該選項支持一些不太常用的分區類型,用戶如果需要,在相應的選項上選擇「y」即可。
16、Consoledrivers(控制台驅動)
VGAtextconsole(CONFIG_VGA_CONSOLE)[Y/n/?]選擇「y」,用戶就可以在標準的VGA顯示方式下使用Linux了。
17、Sound(聲音)
Soundcardsupport(CONFIG_SOUND)[N/y/m/?]選擇「y」,內核就可提供對音效卡的支持。
18、Kernelhacking(內核監視)
MagicSysRqkey(CONFIG_MAGIC_SYSRQ)[N/y/?]選擇「y」,用戶就可以對系統進行部分控制。一般情況下選擇「n」。
六、編譯內核
(一)、建立編譯時所需的從屬文件
#cd/usr/src/linux
#makedep
(二)、清除內核編譯的目標文件
#makeclean
(三)、編譯內核
#makezImage
內核編譯成功後,會在/usr/src/linux/arch/i386/boot目錄中生成一個新內核的映像文件zImage。如果編譯的內核很大的話,系統會提示你使用makebzImage命令來編譯。這時,編譯程序就會生成一個名叫bzImage的內核映像文件。
(四)、編譯可載入模塊
如果用戶在配置內核時設置了可載入模塊,則需要對這些模塊進行編譯,以便將來使用insmod命令進行載入。
#makemoles
#makemodelus_install
編譯成功後,系統會在/lib/moles目錄下生成一個2.3.14子目錄,裡面存放著新內核的所有可載入模塊。
七、啟動新內核
(一)、將新內核和System.map文件拷貝到/boot目錄下
#cp/usr/src/linux/arch/i386/boot/bzImage/boot/vmlinuz-2.3.14
#cp/usr/src/linux/System.map/boot/System.map-2.3.14
#cd/boot
#rm-fSystem.map
#ln-sSystem.map-2.3.14System.map
(二)、配置/etc/lilo.conf文件。在該文件中加入下面幾行:
default=linux-2.3.14
image=/boot/vmlinuz-2.3.14
label=linux-2.3.14
root=/dev/hda1
read-only
(三)、使新配置生效
#/sbin/lilo
(四)、重新啟動系統
#/sbin/reboot
新內核如果不能正常啟動,用戶可以在LILO:提示符下啟動舊內核。然後查出故障原因,重新編譯新內核即可。
Ⅱ STM32 新手要怎麼才能快捷的入門,有那種一邊寫代碼一邊視頻教學的視頻教程嗎
STM32 神舟I號 開發板資料 目 錄
術 語 表 8
前言必讀(文檔結構與快速入門) 8
第0章 入門了解篇 8
0.1 STM32嵌入式入門必看之文章(學習STM32的理由!!!!) 8
0.2 如何從零開始開發一款嵌入式產品(20年的嵌入式經驗分享學習神舟系列) 10
0.2.1 需求定義 10
0.2.2 處理器的選擇 12
0.2.3 開發成本的預測和估計 16
0.2.4 產品開發設計文檔(需要包括硬體和軟體兩個方面) 16
0.2.5 嵌入式高手對技術的理解(含辛茹苦這么多年的精華體驗) 18
第1章 神舟I號開發套件硬體結構 19
1.1. 電路原理圖 19
1.2. 功能特點 19
1.3. 神舟I號開發板硬體電路分析 21
1.3.1. STM32F103RBT6處理器 21
1.3.2. LED指示燈 24
1.3.3. 普通按鍵與復位按鍵 25
1.3.4. USB介面 26
1.3.5. USB轉串口介面 27
1.3.6. 供電電源 28
1.3.7. RTC實時時鍾 29
1.3.8. 電位器(ADC介紹) 31
1.3.9. EEPROM存儲器(IIC介面控制) 31
1.3.10. W25X16 16M SPI FLASH(LCD屏上安裝) 32
1.3.11. MicroSD卡介面 33
1.3.12. JTAG調試介面 35
1.3.13. 液晶顯示模塊 37
1.3.14. 溫度感測器 38
1.3.15. 315M無線模塊 39
1.3.16. 2.4G無線模塊 40
1.3.17. 液晶屏 41
1.3.18. 其他擴展介面 41
1.4. 硬體結構說明 43
1.5. 連接器說明 44
1.6. 硬體資源分配 46
1.6.1. 處理器連接外圍器件管腳分配 46
1.7. STM32系列ARM最小系統設計 48
第2章 其他篇 53
2.1. 帶觸摸的液晶屏顯示屏 53
2.2. 液晶屏底板設計說明 53
第3章 STM32神舟I號基本操作篇 53
3.1 簡介 53
3.2 MDK 4.12集成開發環境的組成 53
3.3 安裝MDK的流程步驟 54
3.4 工程的編輯 54
3.4.1 建立工程 54
3.4.2 建立文件 58
3.4.3 添加文件到工程 59
3.4.4 管理工程目錄以及源文件 60
3.4.5 編譯和連接工程 64
3.4.6 打開舊工程 66
3.5 RVMDK使用技巧 68
2.3.1. 快速定位函數/變數被定義的地方 68
2.3.2. 快速注釋與快速消注釋 69
2.3.3. 快速打開頭文件 69
3.6 JLINK V8模擬器的安裝與應用 70
3.6.1 JLINK V8模擬器簡介 71
3.6.2 JLINK ARM主要特點 71
3.6.3 JLINK V8模擬器安裝 71
3.6.4 JLINK V8模擬器配置(MDK KEIL環境) 73
3.6.5 JLINK V8模擬器配置(IAR 環境) 79
3.6.6 J-FLASH如何燒寫固件到晶元FLASH里 83
3.6.7 JLINK Commander工具查看相關信息 87
3.6.8 JLINK V8模擬器如何自動升級 88
3.7 在MDK開發環境中JLINK V8的調試技巧 90
3.8 如何通過串口下載一個固件到神舟I號開發板 92
3.9 從零開始新建一個STM32的工程模板 95
第3章 STM32神舟I號快速入門篇 115
3.1. STM32神舟I號實驗常式結構 115
3.2. 如何給神舟I號板供電 117
3.1.1. 使用USB供電 117
3.1.2. 使用USB轉串口介面供電 117
3.1.3. 使用JLINK V8供電 117
3.3. 燒錄固件程序的三種方法 118
3.4. 如何編譯和運行光碟里的第一個程序: 119
3.10 如何用JLINK V8模擬和調試第一個程序 123
第4章 STM32神舟I號功能部件基礎篇 127
4.1 通用輸入/輸出(GPIO) 127
4.1.1. 特性 127
4.1.2. 應用領域 127
4.1.3. 管腳描述 127
4.1.4. 功能描述 127
4.1.5. 寄存器描述 133
4.1.6. 寄存器小結 137
4.1.7. 常式01 單個LED點燈程序 137
4.1.8. 常式02 單個LED燈閃爍 139
4.1.9. 常式03 LED流水燈程序 140
4.2 中斷控制器 143
4.2.1 簡介 143
4.2.2 特性 143
4.2.3 關於NVIC 143
4.2.4 電平中斷與脈沖中斷 144
4.2.5 中斷初始化與設置流程概述 144
4.2.6 寄存器描述 145
4.2.7 中斷控制函數 148
4.2.8 外部中斷示例 148
4.2.9 嵌套向量中斷控制器(NVIC)使用示例 148
4.2.10 IRQ使用示例 148
4.2.11 軟體中斷使用示例 148
4.2.12 中斷嵌套使用示例 148
4.2.13 這個例子說明如何設置在特定的CortexM3量表 地址以外的默認使用的功能的NVIC_SetVectorTable misc.h / .c驅動程序。 148
4.2.14 實驗的意義與作用 148
4.3 KEY_LED按鍵與315M無線模塊實驗 149
4.2.1. 實驗的意義與作用 149
4.2.2. 實驗原理 149
4.2.3. 硬體設計 150
4.2.4. 軟體設計 150
4.2.5. 下載與測試 154
4.4 USART-COM串口發送實驗 155
4.3.1. 實驗的意義與作用 155
4.3.2. 實驗原理 155
4.3.3. 硬體設計 157
4.3.4. 軟體設計 157
4.3.5. 下載與現象 159
4.5 USART-COM串口發送與接收實驗 162
4.4.1. 實驗的意義與作用 162
4.4.2. 實驗原理 162
4.4.3. 硬體設計 162
4.4.4. 軟體設計 162
4.4.5. 下載與現象 164
4.6 ADC模數轉換實驗 165
4.5.1 實驗的意義與作用 165
4.5.2 實驗原理 165
4.5.3 硬體設計 166
4.5.4 軟體設計 166
4.5.5 下載與現象 168
4.7 EEPROM讀寫程序實驗 169
4.6.1. 實驗的意義與作用 169
4.6.2. 試驗原理 169
4.6.3. 硬體設計 170
4.6.4. 軟體設計 171
4.6.5. 下載與測試 174
4.8 SPI FLASH(W25X16)讀寫程序實驗 175
4.7.1. SPI FLASH(W25X16)讀寫程序實驗的意義與作用 175
4.7.2. 實驗原理 175
4.7.3. 硬體設計 178
4.7.4. 軟體設計 178
4.7.5. 下載與測試現象 185
4.9 實時時鍾與年月日實驗 186
4.8.1. 實驗的意義與作用 186
4.8.2. 實驗原理 186
4.8.3. 硬體設計 187
4.8.4. 軟體設計 188
4.8.5. 下載與測試 194
4.10 獨立看門狗實驗 195
4.9.1. 實驗的意義與作用 195
4.9.2. 實驗原理 195
4.9.3. 硬體設計 197
4.9.4. 軟體設計 197
4.9.5. 下載與測試 199
4.11 SYSTICK實驗 200
4.10.1. 硬體設計 200
4.10.2. 軟體設計 201
4.10.3. 下載與測試 202
4.12 TFT彩屏顯示實驗 203
4.11.1 實驗的意義與作用 203
4.11.2 實驗原理 203
4.11.3 硬體設計 205
4.11.4 軟體設計 206
4.11.5 下載與現象 211
4.13 TFT觸摸屏顯示加觸摸實驗 212
4.12.1. 實驗的意義與作用 212
4.12.2. 實驗原理 212
4.12.3. 硬體設計 213
4.12.4. 軟體設計 213
4.12.5. 下載與現象 218
4.14 DS18B20溫度感測器實驗 219
4.13.1. 實驗的意義與作用 219
4.13.2. 試驗原理 219
4.13.3. 硬體設計 220
4.13.4. 軟體設計 220
4.13.5. 下載與現象 222
4.15 2.4G模塊通信試驗 223
4.14.1. 2.4G模塊通信實驗的意義與作用 223
4.14.2. 實驗原理 223
4.14.3. 硬體設計 223
4.14.4. 軟體設計 224
4.14.5. 下載與測試現象 230
4.16 USB遙控滑鼠實驗 231
4.15.1. 實驗的意義與作用 231
4.15.2. 實驗原理 231
4.15.3. 硬體設計 232
4.15.4. 軟體設計 233
4.15.5. 下載與測試 236
4.17 MICRO SD卡實驗 237
4.16.1. 實驗的意義與作用 237
4.16.2. 實驗原理 237
4.16.3. 硬體設計 239
4.16.4. 軟體設計 240
4.16.5. 下載與測試 244
4.18 SD-USB讀卡器實驗 245
4.17.1. 實驗的意義與作用 246
4.17.2. 試驗原理 246
4.17.3. 硬體設計 246
4.17.4. 軟體設計 247
4.17.5. 下載與測試 250
4.19 UCOS_UCGUI_DEMO實驗 251
第5章 高級實驗 252
第6章 實驗現象 252