BENTLY NEVADA本特利全新330704-005-050-50-12-00
***提供:PLC可编程控制系统,分散控制系统(DCS)安全仪表系统(SIS),ESD系统,振动监测系统,汽轮机控制 压缩机组控制系统(CCS)等各类工控系统部件
系统里的 PLC模块,DCS模块,CPU模块,IO模块,DO模块,AI模块,DI模块,网络通信模块,
以太网模块,运动控制模块,模拟量输入模块,模拟量输出模块,数字输入模块,数字输出模块,
冗余模块,电源模块,继电器输出模块,继电器输入模块,处理器模块。
冗余模块,电源模块,继电器输出模块,继电器输入模块,处理器模块。
----分散控制系统(DCS) ABB:AC800M系列模块,工业机器人备件DSQC系列、Bailey INFI 90,800xA、Advant OCS with Master Software
----可编程序控制器(PLC)罗克韦尔AB): SLC500: 1747/1746系列 MicroLogix: 1761/1763/1762/1766/1764系列
CompactLogix:1769/1768系列Logix5000: 1756/1789/1794/1760/1788系列 PLC-5: 1771/1785 系列
CompactLogix:1769/1768系列Logix5000: 1756/1789/1794/1760/1788系列 PLC-5: 1771/1785 系列
IC693/IC695/IC697/IC698/IC200/IC660/IC670等CPU模块,通讯模块,模拟量数字量模块。EX2100,EX2000励磁系统卡件IS200系列,DS200系列。
----数据采集及监视控制系统(SCADA)VIBRO-METER(韦博):振动传感器,加速传感器,涡流传感器,监测系统模块网关通讯模块。
----安全仪表系统(SIS)本特利bently 3500/25 3500/92 3500/33 3500/42M
----MOTOROLA MVME 工业用模组 Motorola(摩托罗拉):VME 162、MVME 167、MVME1772、MVME177等系列。XYCOM:I/O 、VME板和处理器等。
----压缩机组控制系统(CCS)等各类工控系统部件
Linux 非压缩内核的入口位于文件/arch/arm/kernel/head-armv.S 中的 stext 段。该段的基地址就是压缩内核解压后的跳转地址。如果系统中加载的内核是非压缩的 Image,那么bootloader将内核从 Flash中拷贝到 RAM 后将直接跳到该地址处,从而启动 Linux 内核。不同体系结构的 Linux 系统的入口文件是不同的,而且因为该文件与具体体系结构有关,所以一般均用汇编语言编写[3]。对基于 ARM 处理的 Linux 系统来说,该文件就是head-armv.S。该程序通过查找处理器内核类型和处理器类型调用相应的初始化函数,再建立页表,***后跳转到 start_kernel()函数开始内核的初始化工作。
检测处理器内核类型是在汇编子函数__lookup_processor_type中完成的。通过以下代码可实现对它的调用:bl __lookup_processor_type。__lookup_processor_type调用结束返回原程序时,会将返回结果保存到寄存器中。其中r8 保存了页表的标志位,r9 保存了处理器的 ID 号,r10 保存了与处理器相关的 struproc_info_list 结构地址。
检测处理器类型是在汇编子函数 __lookup_architecture_type 中完成的。与__lookup_processor_type类似,它通过代码:“bl __lookup_processor_type”来实现对它的调用。该函数返回时,会将返回结构保存在 r5、r6 和 r7 三个寄存器中。其中 r5 保存了 RAM 的起始基地址,r6 保存了 I/O基地址,r7 保存了 I/O的页表偏移地址。当检测处理器内核和处理器类型结束后,将调用__create_page_tables 子函数来建立页表,它所要做的工作就是将 RAM 基地址开始的 4M 空间的物理地址映射到 0xC0000000 开始的虚拟地址处。对笔者的 S3C2410 开发板而言,RAM 连接到物理地址 0x30000000 处,当调用 __create_page_tables 结束后 0x30000000 ~ 0x30400000 物理地址将映射到0xC0000000~0xC0400000 虚拟地址处。
当所有的初始化结束之后,使用如下代码来跳到 C 程序的入口函数 start_kernel()处,开始之后的内核初始化工作:
b SYMBOL_NAME(start_kernel)
3.2 start_kernel函数
start_kernel是所有 Linux 平台进入系统内核初始化后的入口函数,它主要完成剩余的与硬件平台相关的初始化工作,在进行一系列与内核相关的初始化后,调用***个用户进程-init 进程并等待用户进程的执行,这样整个 Linux 内核便启动完毕。该函数所做的具体工作有[4][5]:
1) 调用 setup_arch()函数进行与体系结构相关的***个初始化工作;
对不同的体系结构来说该函数有不同的定义。对于 ARM 平台而言,该函数定义在arch/arm/kernel/Setup.c。它首先通过检测出来的处理器类型进行处理器内核的初始化,然后通过 bootmem_init()函数根据系统定义的 meminfo 结构进行内存结构的初始化,***后调用paging_init()开启 MMU,创建内核页表,映射所有的物理内存和 IO空间。
2) 创建异常向量表和初始化中断处理函数;
3) 初始化系统核心进程调度器和时钟中断处理机制;
4) 初始化串口控制台(serial-c***ole);
ARM-Linux 在初始化过程中一般都会初始化一个串口做为内核的控制台,这样内核在启动过程中就可以通过串口输出信息以便开发者或用户了解系统的启动进程。
5) 创建和初始化系统 cache,为各种内存调用机制提供缓存,包括;动态内存分配,虚拟文件系统(VirtualFile System)及页缓存。
检测处理器内核类型是在汇编子函数__lookup_processor_type中完成的。通过以下代码可实现对它的调用:bl __lookup_processor_type。__lookup_processor_type调用结束返回原程序时,会将返回结果保存到寄存器中。其中r8 保存了页表的标志位,r9 保存了处理器的 ID 号,r10 保存了与处理器相关的 struproc_info_list 结构地址。
检测处理器类型是在汇编子函数 __lookup_architecture_type 中完成的。与__lookup_processor_type类似,它通过代码:“bl __lookup_processor_type”来实现对它的调用。该函数返回时,会将返回结构保存在 r5、r6 和 r7 三个寄存器中。其中 r5 保存了 RAM 的起始基地址,r6 保存了 I/O基地址,r7 保存了 I/O的页表偏移地址。当检测处理器内核和处理器类型结束后,将调用__create_page_tables 子函数来建立页表,它所要做的工作就是将 RAM 基地址开始的 4M 空间的物理地址映射到 0xC0000000 开始的虚拟地址处。对笔者的 S3C2410 开发板而言,RAM 连接到物理地址 0x30000000 处,当调用 __create_page_tables 结束后 0x30000000 ~ 0x30400000 物理地址将映射到0xC0000000~0xC0400000 虚拟地址处。
当所有的初始化结束之后,使用如下代码来跳到 C 程序的入口函数 start_kernel()处,开始之后的内核初始化工作:
b SYMBOL_NAME(start_kernel)
3.2 start_kernel函数
start_kernel是所有 Linux 平台进入系统内核初始化后的入口函数,它主要完成剩余的与硬件平台相关的初始化工作,在进行一系列与内核相关的初始化后,调用***个用户进程-init 进程并等待用户进程的执行,这样整个 Linux 内核便启动完毕。该函数所做的具体工作有[4][5]:
1) 调用 setup_arch()函数进行与体系结构相关的***个初始化工作;
对不同的体系结构来说该函数有不同的定义。对于 ARM 平台而言,该函数定义在arch/arm/kernel/Setup.c。它首先通过检测出来的处理器类型进行处理器内核的初始化,然后通过 bootmem_init()函数根据系统定义的 meminfo 结构进行内存结构的初始化,***后调用paging_init()开启 MMU,创建内核页表,映射所有的物理内存和 IO空间。
2) 创建异常向量表和初始化中断处理函数;
3) 初始化系统核心进程调度器和时钟中断处理机制;
4) 初始化串口控制台(serial-c***ole);
ARM-Linux 在初始化过程中一般都会初始化一个串口做为内核的控制台,这样内核在启动过程中就可以通过串口输出信息以便开发者或用户了解系统的启动进程。
5) 创建和初始化系统 cache,为各种内存调用机制提供缓存,包括;动态内存分配,虚拟文件系统(VirtualFile System)及页缓存。
SIEMENS 6FX1133-0BA01 CPU MODULE GOOD TAKEOUT
SIEMENS REFU WS8974 MAIN BOARD PULLEDFROM SIEMENS 6***1106 DRIVE USED
SIEMENS REFU WS8974 MAIN BOARD PULLEDFROM SIEMENS 6***1106 DRIVE USED
SIEMENS SIMOVERT 6SE7024 TRANSFORMER 4AM8695-0UA40-0NN2
SIEMENS REFU WS8974 MAIN BOARD PULLEDFROM SIEMENS 6***1106 SIMOVERT DRIVE
SIEMENS 6SY7000-0AD73 CAPACITOR SET FOR SIMOVERT
SIEMENS 6ES5451-4UA11 OUTPUT MODULE XLNT CONDITION
SIEMENS 6SE7090-0XX84-0AE0 SIMOVERT DRIVE BOARD
REFU AP604304 SP03 CONTROL BOARD USED
SIEMENS 6ES5-433-8MA11 DIGITAL INPUT MODULE 8X5-24 V REBUILT
SIEMENS 6ES5470-4UB12 ANALOG OUTPUT MODULE (XLNT)
SIEMENS 6SC6100-0NA01 ANALOG CONTROL BOARD EXCELLENT CONDITION
SIEMENS SITOP POWER 3.5 (6EP1 332-1SH31) GOOD TAKEOUT
SIEMENS 6ES5451-4UA14 OUTPUT MODULE XLNT CONDITION (LNC
SIEMENS 6SL3203-0CD22-2AA0 ,AC COMMUTATION CHOKE NEW IN BOX
SIEMENS 6SY7000-0AD65 CAPACITOR SET FOR SIMOVERT
SIEMENS SIMOVERT 6SE7024 FAN ASSY. ONLY XLNT CONDITION
SIEMENS 6ES5243-1AB11 ANALOG MODULE XLNT CONDITION
SIEMENS 6GK1143-0TA01 COMMUNICATION MODULE W/FLASH XLNT
SIEMENS 6EW1380-4AB01 SIPAC POWER SUPPLY GOOD TAKEOUT
SIEMENS 6GK1 500-0AA00 SINEC L2 BUSTERMINAL
SIEMENS 6ES5430-4UA14 INPUT MODULE XLNT CONDITION
SIEMENS 6ES5324-3UR11 INTERFACE MODULE XLNT CONDITION
SIEMENS 6SE7090-0XX84-0FJ0 COMMUNICATION BOARD
SIEMENS 6ES5441-4UA12 SIMATIC OUTPUT MODULE GOOD TAKEOUT
SIEMENS REFU 6SE4800-0SJ01 & REFU SI403203SP93 DRIVE UNIT NEW
SIEMENS 6ES7400-1JA11-0AA0 RACK/CHASSIS BRAND NEW!!
SIEMENS C8451-A11-A12-1 (***P-E135) I/O ANALOG INTERFACE BOARD NEW IN BOX
SIEMENS 6ES5535-3MA12 COMMUNICATION PROCESSOR MODULE GOOD TAKEOUT
SIEMENS 6SC9830-0HJ00 INTERFACE & SIGNAL TRANSDUCER CARD (NEW IN BOX)
SIEMENS 3RK1301-0BB13-0AA4 FAILSAFE DIRECT STARTER (NEW)
SIEMENS 6ES7811-0CA01-0YX2 (SIMATIC S7 ,S7 GRAPH) FACTORY SEALED
SIEMENS 6ES7 416-2FK02-0AB0 SIMATIC S7 CPU NEW NO BOX
SIEMENS ***P-E213-A2 PARALLEL EINGABE INPUT (NEW IN BOX)