当前位置:文档之家› 用crash调试linux kernel

用crash调试linux kernel

用crash调试linux kernel
用crash调试linux kernel

Kernel Debug using Crash utility

0. Crash introduction (3)

1. Filestore Specified (3)

2. Starting Point (4)

2.1 Check system basic info (4)

2.2 Check what’s latest kernel log, (5)

2.3 Check which processes are in ‘D’ state, what’s the number? (5)

2.4 Check memory status (6)

2.5 Check which process eat most memory (7)

2.6 Check which process each most of CPU (8)

2.7 Check IOWAIT for each process (only worked after 5.7) (9)

2.8 Check if “dirty page issue existed” (9)

2.9 Check the stack for “write” system call (9)

3. Common Utility (10)

4. Case Analysis (10)

4.1 Escalation 413-673-127 (10)

4.2 [PRI2][2316592] after slave node changed to primary, it reboot automatically itself . 11

5. Appendix (11)

5.1 Where to find related debug version VxFS and VxVM (11)

5.2 How to load debug info while running “crash” (11)

6. Reference (14)

0.Crash introduction

The Red Hat crash analysis utility is loosely based on the SVR4 UNIX crash command, but has been significantly enhanced by completely merging it with the GNU gdb debugger. The marriage of the two effectively combines the kernel-specific nature of the traditional UNIX crash utility with the source code level debugging capabilities of gdb.

Crash utility can be used to debug:

?Live environment

?Coredump triggered by some issues (such as “null pointer dereference” issue)

?Coredump triggered by ‘sysrq-trigger’ manually (such as “system hung” issue)

1.Filestore Specified

In order to make sure crash can work well in Filestore,

?We have to install some “kernel-kdump” related package. (It is installed in Filestore by default, Following example are from 5.6P2).

?Make sure kernel object file existed

?Know where is the coredump file

?Know where is the Linux kernel source tree (in Filestore 5.6 and 5.7, kernel-source rpm package are installed by default)

?Know the compile options for this kernel

2.Starting Point

2.3Check which processes are in ‘D’ state, what’s the number?(If

there are many process in ‘D’ statue, maybe there are some I/O

2.7Check IOWAIT for each process (only worked after 5.7)

https://www.doczj.com/doc/1016801539.html,mon Utility

?grep (grep –A, grep –B,grep -C)

?foreach

?LXR server(http://10.200.100.240/lxr/http/source )

4.Case Analysis

4.1Escalation 413-673-127

Please check http://10.200.100.175/gf/download/docmanfileversion/58/1755/413-673-127_report.docx

4.2[PRI2][2316592] after slave node changed to primary, it reboot

automatically itself

Please check

http://10.200.100.175/gf/download/docmanfileversion/60/1763/2316592_report.docx

5.Appendix

5.1Where to find related debug version VxFS and VxVM

IOnce we know the VxFS /VxVM rpm version, we can find related branch and package (include debug package) easily from https://www.doczj.com/doc/1016801539.html,/engineering/file-system/scm/

For example, we got a VxFS issue in 5.5RP2HF2.

a)Check VXFS version

Cluster5_02:~ # rpm -qa|grep -i vxfs

VRTSvxfs-platform-5.0.30.332-MP3RP3HF32_SLES10

VRTSvxfs-common-5.0.30.332-MP3RP3HF32_SLES10

b)Check https://www.doczj.com/doc/1016801539.html,/engineering/file-

system/scm/linux_5_0_release_chart.html -> (search “5.0MP3RP3”) ->

https://www.doczj.com/doc/1016801539.html,/engineering/file-system/scm/5.0MP3RP3_linux.html ->

(search “HF32”) to jump to related section.

And we can found

?Branch tag “s_Lx_5_0_MP3RP3HF32_2010-12-15”

?RPM

location “ https://www.doczj.com/doc/1016801539.html, /build/delivery/VxFS_5.0MP3RP/5.0

MP3RP3HF32_linux/sles10_x86_64”

[notice: https://www.doczj.com/doc/1016801539.html, is a nfs server,]

How can we got debug version ko for vxfs? And how to load it

6.Reference

https://www.doczj.com/doc/1016801539.html,/anderson/crash_whitepaper/

http://10.200.100.175/gf/download/docmanfileversion/58/1755/413-673-127_report.docx

http://10.200.100.175/gf/download/docmanfileversion/60/1763/2316592_report.docx https://www.doczj.com/doc/1016801539.html,/engineering/file-system/scm/

Linux内核修改与编译图文教程

Linux 内核修改与编译图文教程 1

1、实验目的 针对Ubuntu10.04中,通过下载新的内核版本,并且修改新版本内核中的系统调用看,然后,在其系统中编译,加载新内核。 2、任务概述 2.1 下载新内核 https://www.doczj.com/doc/1016801539.html,/ 2.2 修改新内核系统调用 添加新的系统调用函数,用来判断输入数据的奇偶性。 2.3 进行新内核编译 通过修改新版内核后,进行加载编译。最后通过编写测试程序进行测试 3、实验步骤 3.1 准备工作 查看系统先前内核版本: (终端下)使用命令:uname -r 2

3.2 下载最新内核 我这里使用的内核版本是 3.3 解压新版内核 将新版内核复制到“/usr/src”目录下 在终端下用命令:cd /usr/src进入到该文件目录 解压内核:linux-2.6.36.tar.bz2,在终端进入cd /usr/src目录输入一下命令: bzip2 -d linux-2.6.36.tar.bz2 tar -xvf linux-2.6.36.tar 文件将解压到/usr/src/linux目录中 3

使用命令: ln -s linux-2.6.36 linux 在终端下输入一下命令: sudo apt-get install build-essential kernel-package libncurses5-dev fakeroot sudo aptitude install libqt3-headers libqt3-mt-dev libqt3-compat-headers libqt3-mt 4

Linux内核崩溃原因分析及错误跟踪技术

Linux内核崩溃原因分析及错误跟踪技术 随着嵌入式Linux系统的广泛应用,对系统的可靠性提出了更高的要求,尤其是涉及到生命财产等重要领域,要求系统达到安全完整性等级3级以上[1],故障率(每小时出现危险故障的可能性)为10-7以下,相当于系统的平均故障间隔时间(MTBF)至少要达到1141年以上,因此提高系统可靠性已成为一项艰巨的任务。对某公司在工业领域14 878个控制器系统的应用调查表明,从2004年初到2007年9月底,随着硬软件的不断改进,根据错误报告统计的故障率已降低到2004年的五分之一以下,但查找错误的时间却增加到原来的3倍以上。 这种解决问题所需时间呈上升的趋势固然有软件问题,但缺乏必要的手段以辅助解决问题才是主要的原因。通过对故障的统计跟踪发现,难以解决的软件错误和从发现到解决耗时较长的软件错误都集中在操作系统的核心部分,这其中又有很大比例集中在驱动程序部分[2]。因此,错误跟踪技术被看成是提高系统安全完整性等级的一个重要措施[1],大多数现代操作系统均为发展提供了操作系统内核“崩溃转储”机制,即在软件系统宕机时,将内存内容保存到磁盘[3],或者通过网络发送到故障服务器[3],或者直接启动内核调试器[4]等,以供事后分析改进。 基于Linux操作系统内核的崩溃转储机制近年来有以下几种: (1) LKCD(Linux Kernel Crash Dump)机制[3]; (2) KDUMP(Linux Kernel Dump)机制[4]; (3) KDB机制[5]; (4) KGDB机制[6]。 综合上述几种机制可以发现,这四种机制之间有以下三个共同点: (1) 适用于为运算资源丰富、存储空间充足的应用场合; (2) 发生系统崩溃后恢复时间无严格要求; (3) 主要针对较通用的硬件平台,如X86平台。 在嵌入式应用场合想要直接使用上列机制中的某一种,却遇到以下三个难点无法解决: (1) 存储空间不足 嵌入式系统一般采用Flash作为存储器,而Flash容量有限,且可能远远小于嵌入式系统中的内存容量。因此将全部内存内容保存到Flash不可行。

同步发电机励磁自动控制系统练习参考答案

一、名词解释 1.励磁系统 答:与同步发电机励磁回路电压建立、调整及在必要时使其电压消失的有关设备和电路。 2.发电机外特性 答:同步发电机的无功电流与端电压的关系特性。 3.励磁方式 答:供给同步发电机励磁电源的方式。 4.无刷励磁系统 答:励磁系统的整流器为旋转工作状态,取消了转子滑环后,无滑动接触元件的励磁系统。 5.励磁调节方式 答:调节同步发电机励磁电流的方式。 6.自并励励磁方式 答:励磁电源直接取自于发电机端电压的励磁方式。 7.励磁调节器的静态工作特性 答:励磁调节器输出的励磁电流(电压)与发电机端电压之间的关系特性。 8.发电机调节特性 答:发电机在不同电压值时,发电机励磁电流IE与无功负荷的关系特性。 9.调差系数 答:表示无功负荷电流从零变至额定值时,发电机端电压的相对变化。 10.正调差特性 答:发电机外特性下倾,当无功电流增大时,发电机的端电压随之降低的外特性。11.负调差特性 答:发电机外特性上翘,当无功电流增大时,发电机的端电压随之升高的外特性。12.无差特性 答:发电机外特性呈水平.当无功电流增大时,发电机的端电压不随之变化的外特性。

13.强励 答:电力系统短路故障母线电压降低时,为提高电力系统的稳定性,迅速将发电机励磁增加到最大值。 二、单项选择题 1.对单独运行的同步发电机,励磁调节的作用是( A ) A.保持机端电压恒定; B.调节发电机发出的无功功率; C.保持机端电压恒定和调节发电机发出的无功功率; D.调节发电机发出的有功电流。 2.对与系统并联运行的同步发电机,励磁调节的作用是( B ) A.保持机端电压恒定; B.调节发电机发出的无功功率; C.调节机端电压和发电机发出的无功功率; D.调节发电机发出的有功电流。 3.当同步发电机与无穷大系统并列运行时,若保持发电机输出的有功 PG = EGUG sinδ为常数,则调节励磁电流时,有( B )等于常数。 X d A.U G sinδ; B.E Gsinδ; C.1 X d ?sinδ; D.sinδ。 4.同步发电机励磁自动调节的作用不包括( C )。 A.电力系统正常运行时,维持发电机或系统的某点电压水平; B.合理分配机组间的无功负荷; C.合理分配机组间的有功负荷; D.提高系统的动态稳定。 5.并列运行的发电机装上自动励磁调节器后,能稳定分配机组间的( A )。A.无功负荷;

如何自行编译一个Linux内核的详细资料概述

如何自行编译一个Linux内核的详细资料概述 曾经有一段时间,升级Linux 内核让很多用户打心里有所畏惧。在那个时候,升级内核包含了很多步骤,也需要很多时间。现在,内核的安装可以轻易地通过像 apt 这样的包管理器来处理。通过添加特定的仓库,你能很轻易地安装实验版本的或者指定版本的内核(比如针对音频产品的实时内核)。 考虑一下,既然升级内核如此容易,为什么你不愿意自行编译一个呢?这里列举一些可能的原因: 你想要简单了解编译内核的过程 你需要启用或者禁用内核中特定的选项,因为它们没有出现在标准选项里 你想要启用标准内核中可能没有添加的硬件支持 你使用的发行版需要你编译内核 你是一个学生,而编译内核是你的任务 不管出于什么原因,懂得如何编译内核是非常有用的,而且可以被视作一个通行权。当我第一次编译一个新的Linux 内核(那是很久以前了),然后尝试从它启动,我从中(系统马上就崩溃了,然后不断地尝试和失败)感受到一种特定的兴奋。 既然这样,让我们来实验一下编译内核的过程。我将使用Ubuntu 16.04 Server 来进行演示。在运行了一次常规的 sudo apt upgrade 之后,当前安装的内核版本是 4.4.0-121。我想要升级内核版本到 4.17,让我们小心地开始吧。 有一个警告:强烈建议你在虚拟机里实验这个过程。基于虚拟机,你总能创建一个快照,然后轻松地从任何问题中回退出来。不要在产品机器上使用这种方式升级内核,除非你知道你在做什么。 下载内核 我们要做的第一件事是下载内核源码。在 Kernel 找到你要下载的所需内核的URL。找到URL 之后,使用如下命令(我以 4.17 RC2 内核为例)来下载源码文件: wget https://git.kernel/torvalds/t/linux-4.17-rc2.tar.gz

嵌入式Linux系统内核的配置、编译和烧写

实验二 嵌入式Linux系统内核的配置、编译和烧写 1.实验目的 1)掌握交叉编译的基本概念; 2)掌握配置和编译嵌入式Linux操作系统内核的方法; 3)掌握嵌入式系统的基本架构。 2.实验环境 1)装有Windows系统的计算机; 2)计算机上装有Linux虚拟机软件; 3)嵌入式系统实验箱及相关软硬件(各种线缆、交叉编译工具链等等)。 3.预备知识 1)嵌入式Linux内核的配置和裁剪方法; 2)交叉编译的基本概念及编译嵌入式Linux内核的方法; 3)嵌入式系统的基本架构。 4.实验内容和步骤 4.1 内核的配置和编译——配置内核的MMC支持 1)由于建立交叉编译器的过程很复杂,且涉及汇编等复杂的指令,在这里 我们提供一个制作好的编译器。建立好交叉编译器之后,我们需要完成 内核的编译,首先我们要有一个完整的Linux内核源文件包,目前流行 的源代码版本有Linux 2.4和Linux 2.6内核,我们使用的是Linux 2.6内核; 2)实验步骤: [1]以root用户登录Linux虚拟机,建立一个自己的工作路径(如用命令 “mkdir ‐p /home/user/build”建立工作路径,以下均采用工作路径 /home/user/build),然后将“cross‐3.3.2.tar.bz2、dma‐linux‐2.6.9.tar.gz、 dma‐rootfs.tar.gz”拷贝到工作路径中(利用Windows与虚拟机Linux 之间的共享目录作为中转),并进入工作目录; [2]解压cross‐3.3.2.tar.bz2到当前路径:“tar ‐jxvf cross‐3.3.2.tar.bz2”; [3]解压完成后,把刚刚解压后在当前路径下生成的“3.3.2”文件夹移 动到“/usr/local/arm/”路径下,如果在“/usr/local/”目录下没有“arm” 文件夹,用户创建即可; [4]解压“dma‐linux‐2.6.9.tar.gz”到当前路径下:

发电机安装与调试方案

张家港保税区热电厂二期工程 锅炉、汽机、电气设备安装工程 发电机安装与调试方 案 中国化学工程第六建设公司 二○○二年三月二十七日

目录 一、编制说明 二、编制依据 三、工程概况 四、施工程序 五、施工方法、技术要求及质量控制 六、主要施工机具及劳动力组织 七、安全措施及注意事项 八、质量保证措施

一、编制说明 应工程投标需要及便于施工准备,特编制本方案。待资料齐备之后,再补充或编制新方案,交施工处(队)执行。 二、编制依据 1、张家港保税区热电厂二期工程锅炉、汽机、电气设备安装工程 2、电气装置安装工程电缆线路施工及验收规范(GB50168-92) 3、电气装置安装工程旋转电机施工及验收规范(GB50170-92) 4、电气装置安装工程电气设备交接试验标准(GB50150-91) 5、本企业标准Q/LJ010503.04-91高压同步电机电气试验 6、本企业部级工法GF、LJ07.08-94,35KV及以下热缩型电缆头制作工法 7、本公司施工过的同类工程施工技术方案 三、工程概况 从招标文件看,本工程设计汽轮发电机2台,额定功率为12000kw,其他数据及资料尚待设计定。 四、施工程序 基础验收→定子和转子安装→集电环和电刷安装→电缆敷设→电缆头制作及电缆试验→电缆接线→电机干燥→底座绝缘试验→电机本体试验→可控硅励磁系统调试→电机控制及保护系统调试→电机系统调试→空载试车→负荷试车 五、施工方法、技术要求及质量控制 1、基础验收 由工艺设备安装专业进行。 2、定子和转子安装。 由工艺设备专业安装,电气专业配合。注意观察埋入式测温元件的引出线和端子板应清洁、绝缘,其屏蔽接地良好。电机的引线及出线的接触面良好、清洁、无油垢,镀银层不应锉磨。引线及出线连接紧固,采用铁质螺栓时,连接后不得构成闭合磁路。 3、集电环和电刷安装 亦由工艺设备专业安装,电气专业配合检查。接至刷架的电缆,

linux、内核源码、内核编译与配置、内核模块开发、内核启动流程

linux、内核源码、内核编译与配置、内核模块开发、内核启动流程(转) linux是如何组成的? 答:linux是由用户空间和内核空间组成的 为什么要划分用户空间和内核空间? 答:有关CPU体系结构,各处理器可以有多种模式,而LInux这样的划分是考虑到系统的 安全性,比如X86可以有4种模式RING0~RING3 RING0特权模式给LINUX内核空间RING3给用户空间 linux内核是如何组成的? 答:linux内核由SCI(System Call Interface)系统调用接口、PM(Process Management)进程管理、MM(Memory Management)内存管理、Arch、 VFS(Virtual File Systerm)虚拟文件系统、NS(Network Stack)网络协议栈、DD(Device Drivers)设备驱动 linux 内核源代码 linux内核源代码是如何组成或目录结构? 答:arc目录存放一些与CPU体系结构相关的代码其中第个CPU子目录以分解boot,mm,kerner等子目录 block目录部分块设备驱动代码 crypto目录加密、压缩、CRC校验算法 documentation 内核文档 drivers 设备驱动 fs 存放各种文件系统的实现代码 include 内核所需要的头文件。与平台无关的头文件入在include/linux子目录下,与平台相关的头文件则放在相应的子目录中 init 内核初始化代码 ipc 进程间通信的实现代码 kernel Linux大多数关键的核心功能者是在这个目录实现(程序调度,进程控制,模块化) lib 库文件代码 mm 与平台无关的内存管理,与平台相关的放在相应的arch/CPU目录net 各种网络协议的实现代码,注意而不是驱动 samples 内核编程的范例 scripts 配置内核的脚本 security SElinux的模块 sound 音频设备的驱动程序 usr cpip命令实现程序 virt 内核虚拟机 内核配置与编译 一、清除 make clean 删除编译文件但保留配置文件

Linux内核移植开发手册

江苏中科龙梦科技有限公司 Linux内核移植开发手册 修 订 记 录 项 次 修订日期 版 本修订內容修订者审 核 1 2009‐02‐04 0.1 初版发行陶宏亮, 胡洪兵 2 2009‐11‐20 0.2 删除一些 多余文字 陶宏亮, 胡洪兵

DISCLAIMER THIS DOCUMENTATION IS PROVIDED FOR USE WITH LEMOTE PRODUCTS. NO LICENSE TO LEMOTE PROPERTY RIGHTS IS GRANTED. LEMOTE ASSUMES NO LIABILITY, PROVIDES NO WARRANTY EITHER EXPRESSED OR IMPLIED RELATING TO THE USAGE, OR INTELLECTUAL PROPERTY RIGHT INFRINGEMENT EXCEPT AS PROVIDED FOR BY LEMOTE TERMS AND CONDITIONS OF SALE. LEMOTE PRODUCTS ARE NOT DESIGNED FOR AND SHOULD NOT BE USED IN ANY MEDICAL OR LIFE SUSTAINING OR SUPPORTING EQUIPMENT. ALL INFORMATION IN THIS DOCUMENT SHOULD BE TREATED AS PRELIMINARY. LEMOTE MAY MAKE CHANGES TO THIS DOCUMENT WITHOUT NOTICE. ANYONE RELYING ON THIS DOCUMENTATION SHOULD CONTACT LEMOTE FOR THE CURRENT DOCUMENTATION AND ERRATA. JIANGSU LEMOTE TECHNOLOGY CORPORATION LIMITED MENGLAN INDUSTRIAL PARK,YUSHAN,CHANGSHU CITY,JIANGSU PROVINCE,CHINA Tel: 0512‐52308661 Fax: 0512‐52308688 Http: //https://www.doczj.com/doc/1016801539.html,

发电机控制系统调试

发电机电气控制系统、调压系统、调速系统 一、调压系统 目前市场上电球主要有:英国(STAMFORD)、法国利莱森玛(LEROY-SOMER)、美国马拉松(MARATHON)、清华泰豪三波(SANBO)、英泰YTM电球。 1、电球主要工作原理(以斯坦福为例) 发电机工作时,引擎驱动发电机旋转,调压板由PMG(永磁机供给电源),A VR输出直流励磁给后机引机定子X、XX、定子产生磁场在转动的线圈(励磁机转子)中产生电流,经过桥式整流到主转子,主转子产生旋转磁场切割主定子,主定子产生三相交流电压,电压大小由AVR控制,A VR通过比较感应主电球输出电压的半压,即380V/2,控制X.XX的励磁输出,从而控制主定子输出电压。 2、电球部件及相关参数 1)永磁机定子及转子(仅限斯坦福及马拉松电球) 定子线圈阻值在2-6Ω之间,线圈对地绝缘,转子为永久磁铁固定在主轴上。永磁机产生130-180V AC 100H Z(马拉松电球永磁机电压较斯坦福低) 2)励磁机 定子绕阻一般为单线圈。直流阻值在10-30Ω之间,线圈对地绝缘转子为三相线圈,输出三相到整流二极管,二极管对于马拉松及斯坦福来说,分为三正三负。 3)主定子与主转子 主定子绝缘>5MΩ,主转子>2MΩ 电阻值主定子<0.1Ω,主转子1.0-2.0Ω 如主电球绝缘过低,需除尘、去潮等保养,如硅钢片发生击穿、烧熔现象,建议电球予以报废。 3、A VR 1)斯坦福电球使用MX321、MX341调压板(带永磁机)和SX440调压板(不带PMG) 说明:1、2为外接调压电位器,超过5米远时必须用网线连接,8、7、6(对应U、V、W)为发电机主电半压输出,K1、K2连接励磁保险,若无励磁保险则可短接使用。 并机时电压调节: 安装并机CT。HC4、HC5、HC6根据机组大小而定,接于调压S1、S2(注:若接反负荷时电压会高于空载电压),将电压降(droop)调在相同位置,调节空机电压一致,带负载调节电压降使电流输出平衡,调节电压降后,空载电压可能会改变,这时需要再调节空载电压,然后带负载调压电压,直到空载电压及电压降调到满意为止。 2)马拉松电球 马拉松电球使用DVR2000、DVR2000E、SE350、APR125-5、SE100等调压板。 注:○1SE350、DVR350、APR125-5 6、7端子为外调压接线,一般短接起来。 ○2COM与50、60短接根据电球的频率而定。 ○3APR125-5 CB-、CB+一般短接。 ○4AP125-5、AVR350、SE350可以并机,但效果不好,若需要并机可用SX440代替。 DVR的调节: ○1取出5A保险丝,连接电源输出及PMG输出线; ○2起动发电机组到额定转速,调压板将做自检测并进入关断形式。 ○3使用选择按钮(select)一步步通过每个调整,通过按“UP”(上)、“DOWN”(下),获得所 需要的发光二极管指示灯的水平。 ○4调完之后,停发电机,连接其它接线,再起动发电机就可对调压器进行最终调整。 注: ○1选择粗调时,每按一下UP/DOWN就会改变6V AC,选择细调时,每按一下UP/DOWN就会改 变±0.5V AC

linux内核编译和生成makefile文件实验报告

操作系统实验报告 姓名:学号: 一、实验题目 1.编译linux内核 2.使用autoconf和automake工具为project工程自动生成Makefile,并测试 3.在内核中添加一个模块 二、实验目的 1.了解一些命令提示符,也里了解一些linux系统的操作。 2.练习使用autoconf和automake工具自动生成Makefile,使同学们了解Makefile的生成原理,熟悉linux编程开发环境 三、实验要求 1使用静态库编译链接swap.c,同时使用动态库编译链接myadd.c。可运行程序生成在src/main目录下。 2要求独立完成,按时提交 四、设计思路和流程图(如:包括主要数据结构及其说明、测试数据的设计及测试结果分析) 1.Makefile的流程图: 2.内核的编译基本操作 1.在ubuntu环境下获取内核源码 2.解压内核源码用命令符:tar xvf linux- 3.18.12.tar.xz 3.配置内核特性:make allnoconfig 4.编译内核:make 5.安装内核:make install

6.测试:cat/boot/grub/grub.conf 7.重启系统:sudo reboot,看是否成功的安装上了内核 8.详情及结构见附录 3.生成makefile文件: 1.用老师给的projec里的main.c函数。 2.需要使用automake和autoconf两个工具,所以用命令符:sudo apt-get install autoconf 进行安装。 3.进入主函数所在目录执行命令:autoscan,这时会在目录下生成两个文件 autoscan.log和configure.scan,将configure.Scan改名为configure.ac,同时用gedit打开,打开后文件修改后的如下: # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS]) AC_CONFIG_SRCDIR([main.c]) AC_CONFIG_HEADERS([config.h]) AM_INIT_AUTOMAKE(main,1.0) # Checks for programs. AC_PROG_CC # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_OUTPUT(Makefile) 4.新建Makefile文件,如下: AUTOMAKE_OPTIONS=foreign bin_PROGRAMS=main first_SOURCES=main.c 5.运行命令aclocal 命令成功之后,在目录下会产生aclocal.m4和autom4te.cache两个文件。 6.运行命令autoheader 命令成功之后,会在目录下产生config.h.in这个新文件。 7.运行命令autoconf 命令成功之后,会在目录下产生configure这个新文件。 8.运行命令automake --add-missing输出结果为: Configure.ac:11:installing./compile’ Configure.ac:8:installing ‘.install-sh’ Configure.ac:8:installing ‘./missing’ Makefile.am:installing ‘./decomp’ 9. 命令成功之后,会在目录下产生depcomp,install-sh和missing这三个新文件和执行下一步的Makefile.in文件。 10.运行命令./configure就可以自动生成Makefile。 4.添加内核模块

嵌入式Linux之Kernel(裁减移植)启动调试、打印技术 printascii(补充)、内核调试

嵌入式系统搭建过程中,对于系统平台搭建工程师在完成Bootloader 的调试之后就进入Kernel 裁减移植的阶段,其中最重要的一步是Kernel 启动的调试,在调试Kernel 过程中通常遇到最常见的问题是启动异常: Uncompressing Linux............................................................ ........................... done, booting the kernel.( 挂死在此处) 注意:这里是arch/arm/boot/compressed/head.S的解压过程,调用了decompress_kernel()(同目录下的misc.c)->include/asm-arm/arch-xxx/uncompress.h的putc()实现。这是在uboot中初始化的,用的是物理地址,因为此时内核还没有起来。 而printascii则是调用了汇编。printascii()位于arch/arm/kernel/debug.S,他需要调用虚拟地址,此虚拟地址通过machine_start提供,而相关的宏在include/asm/arch-xxx/debug-macro.S实现,这下明白了。 10-05-14添加:debug.s里面需要判断一下当前是否打开了mmu,然后指定uart的基址。在解压阶段的head.s,mmu是1:1映射,目的是加快速度。到了内核的head.s,就是真正的mmu了,此时就是虚拟地址了。 导致驱动异常(启动挂死)的原因有很多,如基于EVM 板的硬件做了修改(如更改了FLASH 空间大小、地址和型号,更改了SDRAM 、DDR SDRAM 空间大小、地址和型号,更改了晶振频率等),板卡ID号不支持等。那么如何进行调试那,其实有两种调试技术比较有效。 Kernel 启动调试技术- 使用printascii() 函数跟踪start_kernel() 有没运行,在booting the kernel 之后Kernel 最先执行的是start_kernel() 函数,确认start_kernel() 有否执行就是在其开始代码段添加printascii("start_kernel …") ,如果串口没有打印出start_kernel …,说明start_kernel() 没有运行,那么可能的原因有Bootloader 配置的启动参数错误、 Kernel 加载到(DDR) SDRAM 的地址不正确, Kernel 编译时指定的(DDR) SDRAM 运行地址不正确等。这样就需要一项一项排查错误,当错误被排查完毕,通常打印出start_kernel …是种必然,如果打印出这仪信息说明 Kernel已进入到start_kernel() 执行,如果此时有串口启动打印就比较成功了,如果仍然没有打印启动信息,就需要另外一种调试技术。 附代码修改:init/main.c <<- … extern void printascii(const char*); // Modify asmlinkage void __init start_kernel(void)

发电机控制系统调试

发电机控制系统调试 The latest revision on November 22, 2020

发电机电气控制系统、调压系统、调速系统 一、调压系统 目前市场上电球主要有:英国(STAMFORD)、法国利莱森玛(LEROY-SOMER)、美国马拉松(MARATHON)、清华泰豪三波(SANBO)、英泰YTM电球。 1、电球主要工作原理(以斯坦福为例) 发电机工作时,引擎驱动发电机旋转,调压板由PMG(永磁机供给电源),AVR输出直流励磁给后机引机定子X、XX、定子产生磁场在转动的线圈(励磁机转子)中产生电流,经过桥式整流到主转子,主转子产生旋转磁场切割主定子,主定子产生三相交流电压,电压大小由AVR 控制,AVR通过比较感应主电球输出电压的半压,即380V/2,控制X.XX的励磁输出,从而控制主定子输出电压。 2、电球部件及相关参数 1)永磁机定子及转子(仅限斯坦福及马拉松电球) 定子线圈阻值在2-6Ω之间,线圈对地绝缘,转子为永久磁铁固定在主轴上。永磁机产生130-180VAC100H (马拉松电球永磁机电压较斯坦福低) Z 2)励磁机 定子绕阻一般为单线圈。直流阻值在10-30Ω之间,线圈对地绝缘转子为三相线圈,输出三相到整流二极管,二极管对于马拉松及斯坦福来说,分为三正三负。 3)主定子与主转子 主定子绝缘>5MΩ,主转子>2MΩ 电阻值主定子<0.1Ω,主转子1.0-2.0Ω 如主电球绝缘过低,需除尘、去潮等保养,如硅钢片发生击穿、烧熔现象,建议电球予以报废。 3、AVR 1)斯坦福电球使用MX321、MX341调压板(带永磁机)和SX440调压板(不带PMG) 说明:1、2为外接调压电位器,超过5米远时必须用网线连接,8、7、6(对应U、V、 W)为发电机主电半压输出,K1、K2连接励磁保险,若无励磁保险则可短接使用。 并机时电压调节: 安装并机CT。HC4、HC5、HC6根据机组大小而定,接于调压S1、S2(注:若接反负荷时电压会高于空载电压),将电压降(droop)调在相同位置,调节空机电压一致,带负载调节电压降使电流输出平衡,调节电压降后,空载电压可能会改变,这时需要再调节空载电压,然后带负载调压电压,直到空载电压及电压降调到满意为止。 2)马拉松电球 马拉松电球使用DVR2000、DVR2000E、SE350、APR125-5、SE100等调压板。 注:SE350、DVR350、APR125-56、7端子为外调压接线,一般短接起来。 COM与50、60短接根据电球的频率而定。 APR125-5CB-、CB+一般短接。 AP125-5、AVR350、SE350可以并机,但效果不好,若需要并机可用SX440代替。 DVR的调节: 取出5A保险丝,连接电源输出及PMG输出线; 起动发电机组到额定转速,调压板将做自检测并进入关断形式。 使用选择按钮(select)一步步通过每个调整,通过按“UP”(上)、“DOWN” (下),获得所需要的发光二极管指示灯的水平。 调完之后,停发电机,连接其它接线,再起动发电机就可对调压器进行最终调整。 注: 选择粗调时,每按一下UP/DOWN就会改变6VAC,选择细调时,每按一下UP/DOWN就会 改变±0.5VAC

使用QEMU+GDB调试Linux内核

使用QEMU调试Linux内核 一.使用QEMU安装Ubuntu10.04 1.安装qemu ubuntu下使用sudo apt-get install 安装的qemu版本是0.12.3,该版本中存在bug,使得无法在断点处停下;因此需要在qemu官方网站https://www.doczj.com/doc/1016801539.html,/Download上下载最新的版本qemu-0.12.5.tar.gz的源代码包自己进行编译安装: ●Sudo apt-get install zlib1g-dev libsdl-dev ●解压源代码后,进入源代码所在目录执行./confingure ●执行make ●执行sudo make install 2.创建QEMU格式的硬盘 qemu-img create –f qcow2name.img size 例如:qemu-img create –f qcow2 ubuntu10.04.img 4GB 3.在创建的硬盘上安装操作系统 qemu–hdaname.img–cdrom ~/Download/ubuntu10.04.iso –boot d 说明:使用hda指定硬盘镜像,使用CDROM选定光驱。-boot d 指从cdrom启动,-boot a是软盘,-boot c 是硬盘;使用qemu或qemu-system-x86_64(64为机子),有时安装系统会很慢,这是可以考虑使用kvm来代替。 例如:kvm–hda ubuntu10.04.img –cdrom ./ubuntu-10.04.iso -boot

d 4.从已经装好操作系统的硬盘启动 qemu–hda ubuntu10.04.img 5.在64位的主机上要使用qemu-system-x86_64命令来代替qemu 二.自己编译内核 现将Linux的编译调节过程简述为: 1. 下载自己要调试的Linux内核的源代码,这个可以从Linux内 核的官方网站上得到:https://www.doczj.com/doc/1016801539.html, 2. 编译内核最主要的便是配置文件.config,为了能够准确的得到 结果(第一次不要求编译时间),将本机的config文件直接拷 贝到解压后的源代码中。 3.然后进行make操作,结束后将产生的bzImage文件拷到boot 目录下,重启,选择自己编译的内核,这样一般不会出问题,但时间较慢,大约编译一次需要40分钟。 3.1以前编译内核是为调试内核服务的,现在做华为的项目, 发现需要在实际的机器上运行自己编译的内核,参考网站: https://www.doczj.com/doc/1016801539.html,/tips/compiling-linux-kernel-26.html 4.为了降低编译时间,就需要对配置文件进行裁剪,在配置文件 中有好多是本机不需要的模块,参考: https://www.doczj.com/doc/1016801539.html,/Linux/kernel_options.html。另外调试内 核与模块无关,所以辨识为M的直接可以不选。 5.剪裁的时候采用“逐步瘦身”法,先剪裁掉某个或某几个模块, 然后在进行编译,若没错,在进行模块裁剪,这样可以最大程

DEH控制系统调试措施方案

DEH控制系统调试措施 1 硬件组成介绍 、、、、、、0 2 系统功能结构介绍 、、、、、、,电液接口采用DDV阀(633型)。DEH采集机组转速、功率、抽汽压力等信号,并进行比较、鉴别、计算,按启动、运行要求控制高、低压油动机的开度,使机组转速、功率或抽汽压力满足要求,同时在转速过高等条件出现时输出遮断汽机指令。 2.1汽机的三种运行工况(抽汽机组) 汽轮机有如下五种运行工况: 纯冷凝工况 正常供热供电工况 以热定电工况65295179 纯冷凝工况是指供热未投入的工况,此时低压油动机始终处于全开位置,最大供电功率为 _MW 正常供热供电工况是指供热已投入并且依靠调整高、低压油动机的开度能够同时满足供电与供热要求的工况。 以热定电工况为低压旋转隔板已关至最小,而高压调门尚未全开,通过高压调门的开大或关 小进一步调节热负荷,此工况以满足热负荷为目标,对电功率没有要求。 2.2 DEH的主要控制方式 2.2.1 CCS协调控制 启动结束后,DEH接到CCS的请求,运行人员可按下“ CCS按钮(在操作员站上),在DEH允许的前提下,即可投入CCS K制,同时向CCS发出“CCS投入” 信号。此时,DEH自动切除功率控制和主汽压力控制回路,按CCS给定的指令信号控制高压油动机行程(牵连调节投入后还将同时控制低压油动机行程),同时 将控制信号反馈给CCS 2.2.2 自动控制 这是投CCS协调控制之前的最常用的运行方式。这种运行方式又对应如下几种运行状态:功率控制、主汽压力控制等。关于这几种控制方式的详细说明,请参见后面相关章节。 2.2.3手动控制 “手动”是和“自动”相对的一种运行方式,在此方式下,司机通过操作员站上 “电调主控”画面下“阀控”(手动控制)下的“手动增”或“手动减”按钮增、减高压油动机行程。在“阀控”方式下,系统处于开环控制状态,所有“自动控制”方式下的功能均不能投入。 2.2.4供热控制 当机组负荷大于50%(可适当修改)额定负荷时,允许投入供热。但供热实际投入与否由运行人员操作决定。在供热投入的情况下,有如下几种选择: 2.4.1调压自动与调压手动

在vmware虚拟机上调试内核

安装系统(在创建一个新的虚拟机时一定要用IDE硬盘) 1、在vmware上安装一个linux虚拟机(我用的软件版本:vmware 5.5, fedora 6) 从Internet下载源代码 1、linux-2.6.16 2、kgdb-2.6.16 编译内核 1、将kgdb-2.6.16补丁打到Linux内核源码里。 2、编译内核(make menuconfig, make, make modules_install, make install) 在内核配置菜单的Kernel hacking选项中选择kgdb调试项,例如: [*] KGDB: kernel debugging with remote gdb [*] KGDB: Console messages through gdb Method for KGDB communication (KGDB: On generic serial port (8250)) ---> < > KGDB: On ethernet [*] Simple selection of KGDB serial port (115200) Debug serial port baud rate (0) Serial port number for KGDB 3、修改grub.conf 例如: title Fedora Core (2.6.16) root (hd0,0) kernel /vmlinuz-2.6.16 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.16_debug.img 改为: title Fedora Core (2.6.16) root (hd0,0) kernel /vmlinuz-2.6.16 ro root=/dev/VolGroup00/LogVol00 kgdb8250=0,115200 initrd /initrd-2.6.16_debug.img 4、请检验新编译的内核是否可用。如果不能启动,可能是编译选项没有选好(一直困扰我的问题。实在不行就多选点)。如果没有问题,关闭这个linux虚拟机,进入下一步。

控制系统调试手册要点

文件编号:GP-B06-C02 版本号:V1.0 编号:GP-E-T-CS-2007HD-001 受控状态:受控 调试手册 《1.5MW双馈风力发电机组控制系统》 编制部门:电气控制系统事业部技术部 编制人:董健编制日期: 审核人:审核日期: 批准人:批准日期: 国电联合动力技术有限公司

目录 一、测试目的 (3) 二、测试条件 (3) 三、测试方法和步骤 (3) 1、系统上电 (3) 2、软硬件连接与程序下装 (6) 3、静态信号状态检查 (9) 4、动态信号状态检查 (10) 5、模拟量信号状态检查 (15)

一、测试目的 1.5MW双馈风力发电机组的控制系统采用Beckhoff公司的嵌入式PC为核心控制器件,采集的传感器信号包括风速、风向、温度等模拟信号以及重要开关量信号,它们分别由各自的传感器通过不同的通道输入给控制器,控制器经过内部控制算法输出控制指令,通过执行机构达到控制目的。为了保证整个控制系统的准确工作,必须进行通电测试。通电测试可以验证1.5MW风机传感器是否正常工作以及信号输入输出的正确性,是下一步整机调试的基础工作。调试人员应该严格遵守本说明书的指导规范。 二、测试条件 塔底柜和控制柜以及系统接线正确 PC机一台,内装Beckhoff公司的TwinCAT软件 网线一根 万用表 三、测试方法和步骤 1、系统上电 确认系统接线正确,塔筒柜与机舱柜通讯光缆连接无误。上电顺序是先塔筒柜,后机舱柜,具体顺序如下表所示: 塔筒柜:

机舱柜:

2、软硬件连接与程序下装 打开PC机,确认PC已与嵌入式PC通过网络互连或直连,打开TwinCAT 软件的system manager,进入如下界面 点击Choose Target,进入如下界面 点击Search,进入如下界面

linux2.6内核的编译步骤及模块的动态加载-内核源码学习-linux论坛

[原创]linux2.6内核的编译步骤及模块的动态加载-内核源码 学习-linux论坛 05年本科毕业设计做的是Linux下驱动的剖析,当时就买了一本《Linux设备驱动程序(第二版)》,但是没有实现将最简单的helloworld程 序编译成模块,加载到kernel里。不过,现在自己确实打算做一款芯片的Linux的驱动,因此,又开始看了《Linux设备驱动程序》这本书,不过已 经是第三版了。第二版讲的是2.4的内核,第三版讲的是2.6的内核。两个内核版本之间关于编译内核以及加载模块的方法都有所变化。本文是基于2.6的内核,也建议各位可以先看一下《Linux内核设计与实现(第二版)》作为一个基础知识的铺垫。当然,从实践角度来看,只要按着以下的步骤去做也应该可以实现成功编译内核及加载模块。个人用的Linux版本为:Debian GNU/Linux,内核版本为:2.6.20-1-686.第一步,下载Linux内核的源代码,即构建LDD3(Linux Device Drivers 3rd)上面所说的内核树。 如过安装的Linux系统中已经自带了源代码的话,应该在/usr/src目录下。如果该目录为空的话,则需要自己手动下载源代码。下载代码的方法和链接很多,也可以在CU上通过

https://www.doczj.com/doc/1016801539.html,/search/?key=&;q=kernel&a mp;frmid=53去下载。不过,下载的内核版本最好和所运行的Linux系统的内核版本一致。当然,也可以比Linux系统内核的版本低,但高的话应该不行(个人尚未实践)。 Debian下可以很方便的通过Debian源下载: 首先查找一下可下载的内核源代码: # apt-cache search linux-source 其中显示的有:linux-source-2.6.20,没有和我的内核版本完全匹配,不过也没关系,直接下载就可以了: # apt-get install linux-source-2.6.20 下载完成后,安装在/usr/src下,文件名为: linux-source-2.6.20.tar.bz2,是一个压缩包,解压缩既可以得到整个内核的源代码: # tar jxvf linux-source-2.6.20.tar.bz2

Linux内核启动流程分析(一)

很久以前分析的,一直在电脑的一个角落,今天发现贴出来和大家分享下。由于是word直接粘过来的有点乱,敬请谅解! S3C2410 Linux 2.6.35.7启动分析(第一阶段) arm linux 内核生成过程 1. 依据arch/arm/kernel/vmlinux.lds 生成linux内核源码根目录下的vmlinux,这个vmlinux属于未压缩, 带调试信息、符号表的最初的内核,大小约23MB; 命令:arm-linux-gnu-ld -o vmlinux -T arch/arm/kernel/vmlinux.lds arch/arm/kernel/head.o init/built-in.o --start-group arch/arm/mach-s3c2410/built-in.o kernel/built-in.o mm/built-in.o fs/built-in.o ipc/built-in.o drivers/built-in.o net/built-in.o --end-group .tmp_kallsyms2.o 2. 将上面的vmlinux去除调试信息、注释、符号表等内容,生成arch/arm/boot/Image,这是不带多余信息的linux内核,Image的大小约 3.2MB; 命令:arm-linux-gnu-objcopy -O binary -S vmlinux arch/arm/boot/Image 3.将 arch/arm/boot/Image 用gzip -9 压缩生成arch/arm/boot/compressed/piggy.gz大小约 1.5MB;命令:gzip -f -9 < arch/arm/boot/compressed/../Image > arch/arm/boot/compressed/piggy.gz 4. 编译arch/arm/boot/compressed/piggy.S 生成arch/arm/boot/compressed/piggy.o大小约1.5MB,这里实 际上是将piggy.gz通过piggy.S编译进piggy.o文件中。而piggy.S文件仅有6行,只是包含了文件piggy.gz; 命令:arm-linux-gnu-gcc -o arch/arm/boot/compressed/piggy.o arch/arm/boot/compressed/piggy.S 5. 依据arch/arm/boot/compressed/vmlinux.lds 将arch/arm/boot/compressed/目录下的文件head.o 、piggy.o 、misc.o链接生成arch/arm/boot/compressed/vmlinux,这个vmlinux是经过压缩且含有自解压代码的内核, 大小约1.5MB; 命 令:arm-linux-gnu-ld zreladdr=0x30008000 params_phys=0x30000100 -T arch/arm/boot/compressed/vmlinux.lds a rch/arm/boot/compressed/head.o arch/arm/boot/compressed/piggy.o arch/arm/boot/compressed/misc.o -o arch/arm /boot/compressed/vmlinux

相关主题
文本预览
相关文档 最新文档