Ⅰ 如何给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