嵌入式复习提纲
文章目录
嵌入式复习提纲
考试详情
第1章 嵌入式系统概述
1.1 什么是嵌入式系统
1.2 嵌入式处理器
1.3 嵌入式操作系统
第2章
2.1 ARM简介
2.1.1 精简指令集计算机(RISC)*
科普拓展(可忽略此段)
2.1.2 常用ARM处理器*
2.2 ARM7TDMI
2.2.1 后缀字母意义*(此段考简答)
2.2.2 三级流水线*
2.3 ARM功能框图
2.4 ARM处理器的状态*(必考,重点强调)
2.5 ARM处理器模式*(必考,可能简答)
2.6 ARM内部寄存器
2.7 CPSR-当前程序状态寄存器*
2.8 异常优先级*
第三章
第四章
4.1 LPC2000系列ARM简介
4.3系统启动代码介绍
4.4 系统控制模块
4.4.2时钟系统
4.4.3 晶体振荡器
4.4.4 复位
4.4.5 唤醒时钟
4.4.6 锁相环PLL
4.4.6.2.频率计算
4.4.6.3确定PLL设定过程
4.4.6.4PLL设置举例:*
4.4.6.5寄存器描述:
4.4.7 VPB分频器
4.5 存储器
4.7 引脚连接模块
4.7.1 PINSEL寄存器
4.7.2PINSEL应用示例**
4.8 GPIO
4.8.2 GPIO寄存器
4.8.3 GPIO使用注意事项
4.8.4GPIO相关寄存器描述
4.8.5 GPIO应用示例(程序题)***
4.8.5.3按键控制蜂鸣器,(可能程序题)***
4.9 中断向量控制器
4.9.1 中断分类:
4.9.2 VIC寄存器描述
4.9.3 中断处理
4.11定时器0和定时器1
4.12SPI接口
4.13 I^2^C接口
4.14 UART
4.15 A/D转换器
4.16 看门狗(可能出简答)
第五章
六、最后附上考试可能考的程序题***
考试详情
时间:6月6日13:30-15:30
地点:1A205
题型
数量
范围
选择题
10X2’ -
填空题
20X1’
-
判断题
don’t know
-
简答题
4X5’
-
程序题
12’+8’
-
第1章 嵌入式系统概述
-本章主要考小题
1.1 什么是嵌入式系统
概念: 嵌入式系统(Embedded system),是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,嵌入式系统是用来控制或者监视机器、装置、工厂等大规模设备的系统。
从技术的角度定义: 以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
从系统的角度定义: 嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统。术语嵌入式反映了这些系统通常是更大系统中的一个完整的部分,称为嵌入的系统。嵌入的系统中可以共存多个嵌入式系统
与个人计算机这样的通用计算机系统不同,嵌入式系统通常执行的是带有特定要求的预先定义的任务。由于嵌入式系统只针对一项特殊的任务,设计人员能够对它进行优化,减小尺寸降低成本。嵌入式系统通常进行大量生产,所以单个的成本节约,能够随着产量进行成百上千的放大
1.2 嵌入式处理器
性能指标*
-P4页
分为以下几类:
注重嵌入式处理器的尺寸 、能耗 和价格 应用于PDA等不注重计算的设备;
注重嵌入式处理器的性能 应用于路由器等计算密集型的设备;
注重嵌入式处理器的性能、尺寸、能耗和价格 应用于蜂窝电话等设备;
分类*
-P5页
嵌入式微处理器 EMPU ——————(Embedded Microprocessor Unit) 嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点,但是在电路板上必须包括ROM、RAM、总线接口、各种外设等器件,从而降低了系统的可靠性,技术保密性也较差。嵌入式微处理器及其存储器、总线、外设等安装在一块电路板上,称为单板计算机
微控制器(单片机) MCU —————(Microcontroller Unit) 嵌入式微控制器又称单片机 ,它是将整个计算机系统集成到一块芯片 中。嵌入式微控制器一般以某一种微处理器内核为核心,芯片内部集成各种必要功能和外设。 和嵌入式微处理器相比,微控制器的最大特点是单片化 ,体积大大减小,从而使功耗和成本下降、可靠性提高。微控制器是目前嵌入式系统工业的主流。微控制器的片上外设资源一般比较丰富,适合于控制 ,因此称微控制器 。
DSP处理器 DSP —————————(digital Signal Processor) DSP处理器对系统结构和指令进行了特殊设计,使其适合于执行DSP算法 ,编译效率较高,指令执行速度也较高。在数字滤波、FFT、谱分析等方面DSP算法正在大量进入嵌入式领域,DSP应用正从在通用单片机中以普通指令实现DSP功能,过渡到采用嵌入式DSP处理器。
片上系统 SoC ——————————(System on Chip) 在一个硅片上实现一个更为复杂的系统,这就是System On Chip(SOC)。用户只需定义出其整个应用系统,仿真通过后就可以将设计图交给半导体工厂制作样品。这样除个别无法集成的器件以外,整个嵌入式系统大部分均可集成到一块或几块芯片中去 ,应用系统电路板将变得很简洁,对于减小体积和功耗、提高可靠性 非常有利。 SoC可以分为通用 和专用 两类。 注:了解各自的适用范围与区别
1.3 嵌入式操作系统
备注:
实时操作系统强调实时性、可靠性、灵活性
特点*
-P7页 ppt P20页
异步的事件响应
切换时间和中断延迟时间确定
优先级中断和调度
抢占式调度
内存锁定
连续文件
同步
常见的嵌入式实时操作系统*
-P11 ppt P35(目测选择题)
μClinux uClinux从Linux 2.0/2.4内核派生而来,沿袭了主流Linux的绝大部分特性。它是专门针对没有MMU的CPU,并且为嵌入式系统做了许多小型化的工作。适用于没有虚拟内存或内存管理单元(MMU)的处理器,例如ARM7TDMI。它通常用于具有很少内存或Flash的嵌入式系统。它保留了Linux的大部分优点 :稳定、良好的移植性、优秀的网络功能、完备的对各种文件系统的支持、以及标准丰富的API等。
Windows CE Windows CE是微软开发 的一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作,它是精简的Windows 95。Windows CE的图形用户界面相当出色。Win CE具有模块化、结构化和基于Win32应用程序接口以及与处理器无关等特点。
VxWorks VxWorks操作系统是美国WIND RIVER(风河)公司 于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中。
μC/OS - Ⅱ μC/OS-II是一个源码公开、可移植、可固化、可裁剪、占先式的实时多任务操作系统。其绝大部分源码是用ANSI C (由美国国家标准协会(ANSI)及国际标准化组织(ISO)推出的关于C语言的标准)写的,使其可以方便的移植并支持大多数类型的处理器。
注: 注意了解各自的优缺点,通读留个印象
第2章
-简答题X3,小题
2.1 ARM简介
ARM:A dvanced R ISC M achines
它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC (精简指令集)处理器。
公司的特点是只设计芯片,而不生产和向终端用户出售芯片。它将技术授权给世界上许多著名的半导体、软件和OEM厂商,通过转让设计方案让合作商生成各具特色的芯片,提供服务。
2.1.1 精简指令集计算机(RISC)*
-P16页,了解特性
RISC结构特性
具有大量的通用存储器
独特的装载/保存(load-store)结构
简单的寻址模式
统一和固定长度的指令格式
ARM体系其他特性(阅读、了解)
科普拓展(可忽略此段)
个人科普用,老师只要求了解这两个名词,并且大头考RISC,此段可以忽略
名词解释 CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前CPU的两种架构。它们的区别在于不同的CPU设计理念和方法。
区别
指令系统:
RISC设计者把主要精力放在那些经常使用的指令 上,尽量使它们具有简单高效 的特色。对不常用 的功能,常通过组合指令 来完成。因此,在RISC机器上实现特殊功能 时,效率可能较低 。但可以利用流水技术和超标量技术加以改进和弥补。
而CISC计算机的指令系统比较丰富,有专用指令来完成特定的功能 。因此,处理特殊任务效率较高 。
存储器操作:
RISC对存储器操作有限制 ,使控制简单 化;
而CISC机器的存储器操作指令多 ,操作直接 。
程序:
RISC汇编语言程序一般需要较大的内存空间 ,实现特殊功能时程序复杂,不易设计;
而CISC汇编语言程序编程相对简单 ,科学计算及复杂操作的程序设计相对容易,效率较高。
中断:
RISC机器在一条指令执行的适当地方可以响应中 断;
而CISC机器是在一条指令执行结束后响应中断 。
CPU:
RISC CPU包含有较少的单元电路,因而面积小、功耗低 ;
而CISC CPU包含有丰富的电路单元,因而功能强、面积大、功耗大 。
设计周期:
RISC微处理器结构简单,布局紧凑,设计周期短 ,且易于采用最新技术;
CISC微处理器结构复杂,设计周期长 。
用户使用:
RISC微处理器结构简单,指令规整,性能容易把握,易学易用 ;
CISC微处理器结构复杂 ,功能强大,实现特殊功能容易 。
应用范围:
由于RISC指令系统的确定与特定的应用领域有关,故RISC机器更适合于专用机 ;
而CISC机器则更适合于通用机 。
2.1.2 常用ARM处理器*
-P17,老师重点提到下面两个
Cortex-M3处理器 该处理器是首款基于ARMv7-M架构 的处理器,采用了纯Thumb2指令 的执行方式,具有极高的运算能力和中断响应 能力。 Cortex-M3主要应用 于汽车车身系统,工业控制系统和无线网络等对功耗和成本敏感的嵌入式应用领域
STM32采用该处理器
3级流水线
纯Thumb2指令执行方式
具有极高的运算能力和中断相应能力
主要应用于汽车车身系统,工业控制系统和无线网络
对功耗和成本敏感的嵌入式应用领域
ARM7(系列) 该系列包括ARM7TDMI、ARM7TDMI-S、带有高速缓存处理器宏单元的ARM720T和扩充了Jazelle的ARM7EJ-S。该系列处理器提供Thumb 16位压缩指令集 和EmbededICE软件调试方式,适用于更大规模的SoC设计 中。 ARM7系列广泛应用于多媒体和嵌入式设备 ,包括Internet设备、网络和调制解调器设备,以及移动电话、PDA等无线设备。
3级流水线
冯·诺伊曼结构
包括ARM7TDMI、ARM7TDMI-S、带有高速缓存处理器宏单元的ARM720T和扩充了Jazelle的ARM7EJ-S
2.2 ARM7TDMI
简介: ARM7TDMI是基于ARM体系结构V4版本的低端ARM核。 其弥补了ARM6很难在低于5V电压下稳定工作的不足,还增加了后缀所对应的功能:
2.2.1 后缀字母意义*(此段考简答)
ppt P17页
字母
全写
意义
T
Thumb
支持高密度16位的Thumb指令集
D
Debug
支持片上调试
M
Multiplier
支持64位乘法,内嵌硬件乘法器
I
嵌入式ICE
支持EmbededICE观察硬件;仿真功能模块,支持片上断点和调试点。
S
synthesizable
ARM7TDMI 的可综合(synthesizable)版本(软核),对应用工程师来说其编程模型与ARM7TDMI 一致
2.2.2 三级流水线*
书P20 ppt P20页,了解三个动作及作用、有点,可能考简答或填空
概念: ARM处理器使用流水线来增加处理器指令流的速度,这样可使几个操作同时进行,并使处理和存储器系统连续操作,能提供0.9MIPS/MHz的指令执行速度。ARM7TDMI的流水线分3级,分别为:
取指 :从存储器取出一条指令
译码 :对指令使用的寄存器经行译码
执行: 从寄存器组中读出寄存器 执行移位和ALU操作 寄存器写回到寄存器组
正常操作过程中,在执行一条指令的同时对下一条(第二条)指令进行译码,并将第三条指令从存储器中取出。 无论处理器处于何种状态,程序计数器R15(PC)总是指向“正在取指 ”的指令,而不是指向“正在执行”的指令或者正在“译码”的指令。
在ARM状态下,流水线上各指令的地址为:
在Thumb状态下,流水线上各指令的地址为:
例题pptP20页 0x4000 ADDPC,PC,#4 ;正在被执行的指令,将地址值PC+4写入PC 0x4004 …;正在被译码的指令 0x4008 …;正在被取指的指令,PC=0x4008 0x400C …;PC+4=0x400C
解:
程序计数器R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或“正在译码”的指令。
一般来说,人们习惯性约定将“正在执行”的指令作为参考点,则: PC值=当前程序执行位置+8 注:ARM状态时,每条指令为4字节长。
PC指向0x4000地址,取指ADD指令。
PC指向0x4004地址,译码ADD指令。
PC指向0x4008地址,执行ADD指令,所以指令执行的结果为: PC=PC+4=0x4008+4=0x400C。
其他参照ppt与书
2.3 ARM功能框图
-P23页 ppt P24页,可以忽略具体管脚名,主要记住周围的功能与接口,最可能的考法是对着图片填空
2.4 ARM处理器的状态*(必考,重点强调)
-P24页 ppt P28页
两套指令系统————为了让用户更好的控制代码量
ARM状态 (T=0)
32位 (两套系统位长区别)
ARM指令集
能执行完整功能
处理器执行字方式的ARM指令
处理器在系统上电时默认ARM状态
Thumb状态 (T=1)
16位
Thumb指令集
能执行大部分功能
处理器执行半字方式的ARM指令
两个状态之间的切换并不影响处理器模式或寄存器内容。
注:不考状态切换相关知识,T是CPSR的一个控制位,注意结合下文看,CPSR也是必考点
2.5 ARM处理器模式*(必考,可能简答)
简介: ARM体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。这样的好处是可以更好的支持操作系统并提高工作效率。ARM7TDMI完全支持这七种模式。 此处可结合异常优先级以及下面的ARM内部寄存图表理解记忆。
2.6 ARM内部寄存器
2.6.1ARM状态下的五个重要寄存器*
R13(堆栈指针SP)
R14(链接寄存器LR)
R15(程序计数器PC)
CPSR(当前程序状态寄存器)
SPSR(备份程序状态寄存器)
上下文有介绍
-P28页 ppt P34页
R13拓展 由于处理器的每种运行模式均有自己独立的物理寄存器R13,在用户应用程序的初始化部分,一般都要初始化每种模式下的R13,使其指向该运行模式的栈空间。这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入R13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复,采用这种方式可以保证异常发生后程序的正常执行。
R14拓展: 异常的发生会导致程序正常运行的被打断,并将控制流转移到相应的异常处理(异常响应),有些异常(fiq、irq)事件处理后,系统还希望能回到当初异常发生时被打断的源程序断点处继续完成源程序的执行(异常返回),这就需要一种解决方案,用于记录源程序的断点位置 ,以便正确的异常返回。类似的还有子程序的调用和返回。在主程序中(通过子程序调用指令)调用子程序时,也需要记录下主程序中的调用点位置,以便将来的子程序的返回。 在ARM处理器中使用 R14实现对断点和调用点的记录 ,即使用R14用作返回连接寄存器(LR )。在硬件上和指令执行上,CPU 自动完成相应返回点的记录。在ARM 汇编语言程序设计时,R14和LR通用。 ARM处理器响应异常时,会自动完成将当前的PC保存到LR寄存器。 ARM处理器执行子程序调用指令(BL )时,会自动完成将当前的PC的值减去4的结果数据保存到LR寄存器。即将调用指令的下紧邻指令的地址保存到LR。
-R15 它指向正在“取指”的指令,由于ARM体系结构采用了多级流水线技术,对于ARM指令集而言,PC总是指向当前正在执行指令的下两条指令的地址,即PC的值为当前指令的地址值加8个字节程序状态寄存器。 注:记住每个寄存器是做什么的以及各个位的含义(CPSR)
2.7 CPSR-当前程序状态寄存器*
书 p36 ppt P43
助记:
字符
释义
value
N
nagetive
负或小于
Z
Zero
零
C
Carry
进位或借位拓展
V
oVerflow
溢出标志
记住CPSR每个位的作用,老师强调过,可能简答或填空,可参照ppt P44页往后详细了解
2.8 异常优先级*
-P41页 ppt P49页 记住异常优先级
简介 只要正常的程序流被暂时中止,处理器就进入异常模式。例如在用户模式下执行程序时,当外设向处理器内核发出中断请求导致内核从用户模式切换到异常中断模式。 如果同时发生两个或更多异常,那么将按照固定的顺序 来处理异常。
异常优先级*
当多个异常同时发生时,一个固定的优先级决定系统处理它们的顺序。
用户希望 发生的中断: FIQ、IRQ、软中断
用户不希望 发生的中断: 复位、 数据中止、预取指中止、未定义指令中止
第三章
不考
第四章
-4.3-4.6 了解即可 -4.7-4.16 重点
4.1 LPC2000系列ARM简介
简介 conversion toolLPC2000系列微控制器基于ARM7TDMI-S CPU内核。支持ARM和Thumb指令集 ,芯片内集成丰富外设 ,而且具有非常低的功率消耗 。使该系列微控制器特别适用于工业控制、医疗系统、访问控制和POS机等场合。
特性*(必考)
P88页看一看 P89页的特性:
片内Boot装载程序实现在系统编程(ISP)和在应用中编程(IAP)
4/8(64/144脚封装)10位A/D转换器,转换时间低至2.44ms
多个串行接口,包括2个UART、高速I2Cj接口(400kb/s)和2个SPI接口
通过片内PLL可实现最大为60MHz的CPU操作频率*
晶振频率范围为1-30Hz,若使用PLL或ISP功能,则为10-25MHz*
46个(64脚封装)或112个(144脚封装)通用I/O口(可承受5V电压)
2个低功耗模式:空闲和掉电
双电源:
CPU操作电压范围1.65~1.95V(1.8V,±8.3%)
I/O操作电压范围为3.0~3.6v(3.3V,±10%)
4.3系统启动代码介绍
-P112页,老师由此引入一个Bootloader的概念、记住你认为有用的
4.3.1Bootloader*
在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行 。可以初始化硬件设备、建立内存空间映射图 ,从而将系统的软硬件环境带到一个合适状态 ,以便为最终调用操作系统内核准备好正确的环境 。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序)&
嵌入式复习提纲
文章目录
嵌入式复习提纲
考试详情
第1章 嵌入式系统概述
1.1 什么是嵌入式系统
1.2 嵌入式处理器
1.3 嵌入式操作系统
第2章
2.1 ARM简介
2.1.1 精简指令集计算机(RISC)*
科普拓展(可忽略此段)
2.1.2 常用ARM处理器*
2.2 ARM7TDMI
2.2.1 后缀字母意义*(此段考简答)
2.2.2 三级流水线*
2.3 ARM功能框图
2.4 ARM处理器的状态*(必考,重点强调)
2.5 ARM处理器模式*(必考,可能简答)
2.6 ARM内部寄存器
2.7 CPSR-当前程序状态寄存器*
2.8 异常优先级*
第三章
第四章
4.1 LPC2000系列ARM简介
4.3系统启动代码介绍
4.4 系统控制模块
4.4.2时钟系统
4.4.3 晶体振荡器
4.4.4 复位
4.4.5 唤醒时钟
4.4.6 锁相环PLL
4.4.6.2.频率计算
4.4.6.3确定PLL设定过程
4.4.6.4PLL设置举例:*
4.4.6.5寄存器描述:
4.4.7 VPB分频器
4.5 存储器
4.7 引脚连接模块
4.7.1 PINSEL寄存器
4.7.2PINSEL应用示例**
4.8 GPIO
4.8.2 GPIO寄存器
4.8.3 GPIO使用注意事项
4.8.4GPIO相关寄存器描述
4.8.5 GPIO应用示例(程序题)***
4.8.5.3按键控制蜂鸣器,(可能程序题)***
4.9 中断向量控制器
4.9.1 中断分类:
4.9.2 VIC寄存器描述
4.9.3 中断处理
4.11定时器0和定时器1
4.12SPI接口
4.13 I^2^C接口
4.14 UART
4.15 A/D转换器
4.16 看门狗(可能出简答)
第五章
六、最后附上考试可能考的程序题***
考试详情
时间:6月6日13:30-15:30
地点:1A205
题型
数量
范围
选择题
10X2’ -
填空题
20X1’
-
判断题
don’t know
-
简答题
4X5’
-
程序题
12’+8’
-
第1章 嵌入式系统概述
-本章主要考小题
1.1 什么是嵌入式系统
概念: 嵌入式系统(Embedded system),是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,嵌入式系统是用来控制或者监视机器、装置、工厂等大规模设备的系统。
从技术的角度定义: 以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
从系统的角度定义: 嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统。术语嵌入式反映了这些系统通常是更大系统中的一个完整的部分,称为嵌入的系统。嵌入的系统中可以共存多个嵌入式系统
与个人计算机这样的通用计算机系统不同,嵌入式系统通常执行的是带有特定要求的预先定义的任务。由于嵌入式系统只针对一项特殊的任务,设计人员能够对它进行优化,减小尺寸降低成本。嵌入式系统通常进行大量生产,所以单个的成本节约,能够随着产量进行成百上千的放大
1.2 嵌入式处理器
性能指标*
-P4页
分为以下几类:
注重嵌入式处理器的尺寸 、能耗 和价格 应用于PDA等不注重计算的设备;
注重嵌入式处理器的性能 应用于路由器等计算密集型的设备;
注重嵌入式处理器的性能、尺寸、能耗和价格 应用于蜂窝电话等设备;
分类*
-P5页
嵌入式微处理器 EMPU ——————(Embedded Microprocessor Unit) 嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点,但是在电路板上必须包括ROM、RAM、总线接口、各种外设等器件,从而降低了系统的可靠性,技术保密性也较差。嵌入式微处理器及其存储器、总线、外设等安装在一块电路板上,称为单板计算机
微控制器(单片机) MCU —————(Microcontroller Unit) 嵌入式微控制器又称单片机 ,它是将整个计算机系统集成到一块芯片 中。嵌入式微控制器一般以某一种微处理器内核为核心,芯片内部集成各种必要功能和外设。 和嵌入式微处理器相比,微控制器的最大特点是单片化 ,体积大大减小,从而使功耗和成本下降、可靠性提高。微控制器是目前嵌入式系统工业的主流。微控制器的片上外设资源一般比较丰富,适合于控制 ,因此称微控制器 。
DSP处理器 DSP —————————(digital Signal Processor) DSP处理器对系统结构和指令进行了特殊设计,使其适合于执行DSP算法 ,编译效率较高,指令执行速度也较高。在数字滤波、FFT、谱分析等方面DSP算法正在大量进入嵌入式领域,DSP应用正从在通用单片机中以普通指令实现DSP功能,过渡到采用嵌入式DSP处理器。
片上系统 SoC ——————————(System on Chip) 在一个硅片上实现一个更为复杂的系统,这就是System On Chip(SOC)。用户只需定义出其整个应用系统,仿真通过后就可以将设计图交给半导体工厂制作样品。这样除个别无法集成的器件以外,整个嵌入式系统大部分均可集成到一块或几块芯片中去 ,应用系统电路板将变得很简洁,对于减小体积和功耗、提高可靠性 非常有利。 SoC可以分为通用 和专用 两类。 注:了解各自的适用范围与区别
1.3 嵌入式操作系统
备注:
实时操作系统强调实时性、可靠性、灵活性
特点*
-P7页 ppt P20页
异步的事件响应
切换时间和中断延迟时间确定
优先级中断和调度
抢占式调度
内存锁定
连续文件
同步
常见的嵌入式实时操作系统*
-P11 ppt P35(目测选择题)
μClinux uClinux从Linux 2.0/2.4内核派生而来,沿袭了主流Linux的绝大部分特性。它是专门针对没有MMU的CPU,并且为嵌入式系统做了许多小型化的工作。适用于没有虚拟内存或内存管理单元(MMU)的处理器,例如ARM7TDMI。它通常用于具有很少内存或Flash的嵌入式系统。它保留了Linux的大部分优点 :稳定、良好的移植性、优秀的网络功能、完备的对各种文件系统的支持、以及标准丰富的API等。
Windows CE Windows CE是微软开发 的一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作,它是精简的Windows 95。Windows CE的图形用户界面相当出色。Win CE具有模块化、结构化和基于Win32应用程序接口以及与处理器无关等特点。
VxWorks VxWorks操作系统是美国WIND RIVER(风河)公司 于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中。
μC/OS - Ⅱ μC/OS-II是一个源码公开、可移植、可固化、可裁剪、占先式的实时多任务操作系统。其绝大部分源码是用ANSI C (由美国国家标准协会(ANSI)及国际标准化组织(ISO)推出的关于C语言的标准)写的,使其可以方便的移植并支持大多数类型的处理器。
注: 注意了解各自的优缺点,通读留个印象
第2章
-简答题X3,小题
2.1 ARM简介
ARM:A dvanced R ISC M achines
它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC (精简指令集)处理器。
公司的特点是只设计芯片,而不生产和向终端用户出售芯片。它将技术授权给世界上许多著名的半导体、软件和OEM厂商,通过转让设计方案让合作商生成各具特色的芯片,提供服务。
2.1.1 精简指令集计算机(RISC)*
-P16页,了解特性
RISC结构特性
具有大量的通用存储器
独特的装载/保存(load-store)结构
简单的寻址模式
统一和固定长度的指令格式
ARM体系其他特性(阅读、了解)
科普拓展(可忽略此段)
个人科普用,老师只要求了解这两个名词,并且大头考RISC,此段可以忽略
名词解释 CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前CPU的两种架构。它们的区别在于不同的CPU设计理念和方法。
区别
指令系统:
RISC设计者把主要精力放在那些经常使用的指令 上,尽量使它们具有简单高效 的特色。对不常用 的功能,常通过组合指令 来完成。因此,在RISC机器上实现特殊功能 时,效率可能较低 。但可以利用流水技术和超标量技术加以改进和弥补。
而CISC计算机的指令系统比较丰富,有专用指令来完成特定的功能 。因此,处理特殊任务效率较高 。
存储器操作:
RISC对存储器操作有限制 ,使控制简单 化;
而CISC机器的存储器操作指令多 ,操作直接 。
程序:
RISC汇编语言程序一般需要较大的内存空间 ,实现特殊功能时程序复杂,不易设计;
而CISC汇编语言程序编程相对简单 ,科学计算及复杂操作的程序设计相对容易,效率较高。
中断:
RISC机器在一条指令执行的适当地方可以响应中 断;
而CISC机器是在一条指令执行结束后响应中断 。
CPU:
RISC CPU包含有较少的单元电路,因而面积小、功耗低 ;
而CISC CPU包含有丰富的电路单元,因而功能强、面积大、功耗大 。
设计周期:
RISC微处理器结构简单,布局紧凑,设计周期短 ,且易于采用最新技术;
CISC微处理器结构复杂,设计周期长 。
用户使用:
RISC微处理器结构简单,指令规整,性能容易把握,易学易用 ;
CISC微处理器结构复杂 ,功能强大,实现特殊功能容易 。
应用范围:
由于RISC指令系统的确定与特定的应用领域有关,故RISC机器更适合于专用机 ;
而CISC机器则更适合于通用机 。
2.1.2 常用ARM处理器*
-P17,老师重点提到下面两个
Cortex-M3处理器 该处理器是首款基于ARMv7-M架构 的处理器,采用了纯Thumb2指令 的执行方式,具有极高的运算能力和中断响应 能力。 Cortex-M3主要应用 于汽车车身系统,工业控制系统和无线网络等对功耗和成本敏感的嵌入式应用领域
STM32采用该处理器
3级流水线
纯Thumb2指令执行方式
具有极高的运算能力和中断相应能力
主要应用于汽车车身系统,工业控制系统和无线网络
对功耗和成本敏感的嵌入式应用领域
ARM7(系列) 该系列包括ARM7TDMI、ARM7TDMI-S、带有高速缓存处理器宏单元的ARM720T和扩充了Jazelle的ARM7EJ-S。该系列处理器提供Thumb 16位压缩指令集 和EmbededICE软件调试方式,适用于更大规模的SoC设计 中。 ARM7系列广泛应用于多媒体和嵌入式设备 ,包括Internet设备、网络和调制解调器设备,以及移动电话、PDA等无线设备。
3级流水线
冯·诺伊曼结构
包括ARM7TDMI、ARM7TDMI-S、带有高速缓存处理器宏单元的ARM720T和扩充了Jazelle的ARM7EJ-S
2.2 ARM7TDMI
简介: ARM7TDMI是基于ARM体系结构V4版本的低端ARM核。 其弥补了ARM6很难在低于5V电压下稳定工作的不足,还增加了后缀所对应的功能:
2.2.1 后缀字母意义*(此段考简答)
ppt P17页
字母
全写
意义
T
Thumb
支持高密度16位的Thumb指令集
D
Debug
支持片上调试
M
Multiplier
支持64位乘法,内嵌硬件乘法器
I
嵌入式ICE
支持EmbededICE观察硬件;仿真功能模块,支持片上断点和调试点。
S
synthesizable
ARM7TDMI 的可综合(synthesizable)版本(软核),对应用工程师来说其编程模型与ARM7TDMI 一致
2.2.2 三级流水线*
书P20 ppt P20页,了解三个动作及作用、有点,可能考简答或填空
概念: ARM处理器使用流水线来增加处理器指令流的速度,这样可使几个操作同时进行,并使处理和存储器系统连续操作,能提供0.9MIPS/MHz的指令执行速度。ARM7TDMI的流水线分3级,分别为:
取指 :从存储器取出一条指令
译码 :对指令使用的寄存器经行译码
执行: 从寄存器组中读出寄存器 执行移位和ALU操作 寄存器写回到寄存器组
正常操作过程中,在执行一条指令的同时对下一条(第二条)指令进行译码,并将第三条指令从存储器中取出。 无论处理器处于何种状态,程序计数器R15(PC)总是指向“正在取指 ”的指令,而不是指向“正在执行”的指令或者正在“译码”的指令。
在ARM状态下,流水线上各指令的地址为:
在Thumb状态下,流水线上各指令的地址为:
例题pptP20页 0x4000 ADDPC,PC,#4 ;正在被执行的指令,将地址值PC+4写入PC 0x4004 …;正在被译码的指令 0x4008 …;正在被取指的指令,PC=0x4008 0x400C …;PC+4=0x400C
解:
程序计数器R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或“正在译码”的指令。
一般来说,人们习惯性约定将“正在执行”的指令作为参考点,则: PC值=当前程序执行位置+8 注:ARM状态时,每条指令为4字节长。
PC指向0x4000地址,取指ADD指令。
PC指向0x4004地址,译码ADD指令。
PC指向0x4008地址,执行ADD指令,所以指令执行的结果为: PC=PC+4=0x4008+4=0x400C。
其他参照ppt与书
2.3 ARM功能框图
-P23页 ppt P24页,可以忽略具体管脚名,主要记住周围的功能与接口,最可能的考法是对着图片填空
2.4 ARM处理器的状态*(必考,重点强调)
-P24页 ppt P28页
两套指令系统————为了让用户更好的控制代码量
ARM状态 (T=0)
32位 (两套系统位长区别)
ARM指令集
能执行完整功能
处理器执行字方式的ARM指令
处理器在系统上电时默认ARM状态
Thumb状态 (T=1)
16位
Thumb指令集
能执行大部分功能
处理器执行半字方式的ARM指令
两个状态之间的切换并不影响处理器模式或寄存器内容。
注:不考状态切换相关知识,T是CPSR的一个控制位,注意结合下文看,CPSR也是必考点
2.5 ARM处理器模式*(必考,可能简答)
简介: ARM体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。这样的好处是可以更好的支持操作系统并提高工作效率。ARM7TDMI完全支持这七种模式。 此处可结合异常优先级以及下面的ARM内部寄存图表理解记忆。
2.6 ARM内部寄存器
2.6.1ARM状态下的五个重要寄存器*
R13(堆栈指针SP)
R14(链接寄存器LR)
R15(程序计数器PC)
CPSR(当前程序状态寄存器)
SPSR(备份程序状态寄存器)
上下文有介绍
-P28页 ppt P34页
R13拓展 由于处理器的每种运行模式均有自己独立的物理寄存器R13,在用户应用程序的初始化部分,一般都要初始化每种模式下的R13,使其指向该运行模式的栈空间。这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入R13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复,采用这种方式可以保证异常发生后程序的正常执行。
R14拓展: 异常的发生会导致程序正常运行的被打断,并将控制流转移到相应的异常处理(异常响应),有些异常(fiq、irq)事件处理后,系统还希望能回到当初异常发生时被打断的源程序断点处继续完成源程序的执行(异常返回),这就需要一种解决方案,用于记录源程序的断点位置 ,以便正确的异常返回。类似的还有子程序的调用和返回。在主程序中(通过子程序调用指令)调用子程序时,也需要记录下主程序中的调用点位置,以便将来的子程序的返回。 在ARM处理器中使用 R14实现对断点和调用点的记录 ,即使用R14用作返回连接寄存器(LR )。在硬件上和指令执行上,CPU 自动完成相应返回点的记录。在ARM 汇编语言程序设计时,R14和LR通用。 ARM处理器响应异常时,会自动完成将当前的PC保存到LR寄存器。 ARM处理器执行子程序调用指令(BL )时,会自动完成将当前的PC的值减去4的结果数据保存到LR寄存器。即将调用指令的下紧邻指令的地址保存到LR。
-R15 它指向正在“取指”的指令,由于ARM体系结构采用了多级流水线技术,对于ARM指令集而言,PC总是指向当前正在执行指令的下两条指令的地址,即PC的值为当前指令的地址值加8个字节程序状态寄存器。 注:记住每个寄存器是做什么的以及各个位的含义(CPSR)
2.7 CPSR-当前程序状态寄存器*
书 p36 ppt P43
助记:
字符
释义
value
N
nagetive
负或小于
Z
Zero
零
C
Carry
进位或借位拓展
V
oVerflow
溢出标志
记住CPSR每个位的作用,老师强调过,可能简答或填空,可参照ppt P44页往后详细了解
2.8 异常优先级*
-P41页 ppt P49页 记住异常优先级
简介 只要正常的程序流被暂时中止,处理器就进入异常模式。例如在用户模式下执行程序时,当外设向处理器内核发出中断请求导致内核从用户模式切换到异常中断模式。 如果同时发生两个或更多异常,那么将按照固定的顺序 来处理异常。
异常优先级*
当多个异常同时发生时,一个固定的优先级决定系统处理它们的顺序。
用户希望 发生的中断: FIQ、IRQ、软中断
用户不希望 发生的中断: 复位、 数据中止、预取指中止、未定义指令中止
第三章
不考
第四章
-4.3-4.6 了解即可 -4.7-4.16 重点
4.1 LPC2000系列ARM简介
简介 conversion toolLPC2000系列微控制器基于ARM7TDMI-S CPU内核。支持ARM和Thumb指令集 ,芯片内集成丰富外设 ,而且具有非常低的功率消耗 。使该系列微控制器特别适用于工业控制、医疗系统、访问控制和POS机等场合。
特性*(必考)
P88页看一看 P89页的特性:
片内Boot装载程序实现在系统编程(ISP)和在应用中编程(IAP)
4/8(64/144脚封装)10位A/D转换器,转换时间低至2.44ms
多个串行接口,包括2个UART、高速I2Cj接口(400kb/s)和2个SPI接口
通过片内PLL可实现最大为60MHz的CPU操作频率*
晶振频率范围为1-30Hz,若使用PLL或ISP功能,则为10-25MHz*
46个(64脚封装)或112个(144脚封装)通用I/O口(可承受5V电压)
2个低功耗模式:空闲和掉电
双电源:
CPU操作电压范围1.65~1.95V(1.8V,±8.3%)
I/O操作电压范围为3.0~3.6v(3.3V,±10%)
4.3系统启动代码介绍
-P112页,老师由此引入一个Bootloader的概念、记住你认为有用的
4.3.1Bootloader*
在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行 。可以初始化硬件设备、建立内存空间映射图 ,从而将系统的软硬件环境带到一个合适状态 ,以便为最终调用操作系统内核准备好正确的环境 。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序)&
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1095, humandate(1716777263)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(26))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1096, humandate(1716777263)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(27))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1095, humandate(1716891141)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(26))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1096, humandate(1716891141)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(27))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1095, humandate(1734731121)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(26))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1096, humandate(1734731121)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(27))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1095, humandate(1734769152)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(26))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1096, humandate(1734769152)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(27))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1095, humandate(1735064818)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(26))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1096, humandate(1735064818)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(27))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1095, humandate(1737975753)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(26))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1096, humandate(1737975753)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(27))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1095, humandate(1737976496)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(26))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1096, humandate(1737976496)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(27))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1095, humandate(1738013675)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(26))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1096, humandate(1738013675)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(27))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1095, humandate(1738013842)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(26))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1096, humandate(1738013842)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(27))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1095, humandate(1738013899)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(26))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1096, humandate(1738013899)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(27))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1095, humandate(1738014213)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(26))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1096, humandate(1738014213)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(27))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1095, humandate(1738080102)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(26))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1096, humandate(1738080102)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(27))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1095, humandate(1738157811)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(26))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1096, humandate(1738157811)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(27))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1095, humandate(1738179863)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(26))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1096, humandate(1738179863)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(27))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1095, humandate(1738190882)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(26))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1096, humandate(1738190882)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(27))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1095, humandate(1738292333)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(26))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1096, humandate(1738292333)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(27))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1095, humandate(1739729120)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(26))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1096, humandate(1739729120)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(27))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1095, humandate(1744014907)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(26))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1096, humandate(1744014907)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(27))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1095, humandate(1744025228)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(26))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)
Error[2]: Trying to access array offset on value of type int, File: /www/wwwroot/www.usbmi.com/xiunophp/xiunophp.min.php, Line: 54
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 1096, humandate(1744025228)
File: /www/wwwroot/www.usbmi.com/tmp/model_thread.func.php, Line: 662, well_thread_format(array(27))
File: /www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm, Line: 249, well_thread_find_asc(array(20) , 20)
File: /www/wwwroot/www.usbmi.com/tmp/route_read.php, Line: 204, include(/www/wwwroot/www.usbmi.com/tmp/view_template_d8_htm_read.htm)
File: /www/wwwroot/www.usbmi.com/tmp/index.inc.php, Line: 129, include(/www/wwwroot/www.usbmi.com/tmp/route_read.php)
File: /www/wwwroot/www.usbmi.com/index.php, Line: 29, include(/www/wwwroot/www.usbmi.com/tmp/index.inc.php)