ThreadXUserGuide-中文手册
潮流 GRP260x 管理员手册说明书

深圳市潮流网络技术有限公司GRP2601/GRP2601P |GRP2602/GRP2602P/GRP2602W/GRP2602GGRP2603/GRP2603P|GRP2604/GRP2604PIP语音电话用户手册GRP2601/GRP2601PGRP2602/GRP2602P/GRP2602W/GRP2602G GRP2603/GRP2603P GRP2604/GRP2604P©2022潮流网络技术有限公司.版权所有:未经公司的书面许可,出于任何目的、以任何形式或方式复制或打印的行为是不允许的。
本文中的信息如有改动,恕不另行通知。
最新的电子版本手册可在这里下载:/supportGrandstream是一个注册商标,Grandstream LOGO是潮流网络技术有限公司在美国、欧洲和其它国家的商标。
未经潮流批准擅自修改本产品,或以用户手册以外的方式使用本产品,将会导致保修无效。
警告请不要使用与设备不匹配的电源适配器,设备可能因此损坏,导致保修失效。
GNU GPL信息GRP260x固件包含GNU通用公共许可证(GPL)许可的第三方软件。
潮流根据GPL的特定条款使用软件。
有关许可证的确切条款和条件,请参阅GNU通用公共许可证(GPL)。
潮流GNU GPL相关源代码可以从Grandstream网站下载:/sites/default/files/Resources/grp260x_gnu_gpl.zip目录文档目的 (7)更新日志 (8)固件版本 1.0.3.18 (8)固件版本 1.0.1.57 (8)固件版本 1.0.1.50 (8)固件版本 1.0.1.41 (8)固件版本 1.0.1.36 (8)固件版本 1.0.1.18 (8)欢迎 (9)产品概述 (10)产品特色 (10)技术规格 (11)初始安装 (16)设备清单 (16)安装GRP260x (17)桌面安装 (17)壁挂安装 (17)连接GRP260x (17)了解GRP260X (19)待机界面 (19)使用键盘 (24)通过键盘配置 (27)字母输入 (30)电话功能 (32)拨打电话 (32)听筒、扬声器和耳机模式 (32)多SIP帐号和线路 (32)完成呼叫 (33)IP呼叫 (35)接听电话 (35)接听电话 (35)免打扰 (35)添加黑名单 (36)通话期间 (36)呼叫等待/呼叫保持 (36)静音 (37)呼叫转移 (37)呼叫转移 (37)五方会议 (38)多功能按键(仅GRP2604支持) (38)虚拟多功能按键 (41)语音信箱 (42)呼叫功能 (42)联系人 (45)本地联系人 (45)添加单个联系人 (45)电话本 (45)XML电话本语法 (45)从Web UI界面下载/上传XML电话本 (46)XML远程电话簿URL (46)呼叫记录 (48)本地呼叫记录 (48)呼叫记录操作 (48)设备诊断 (49)连接设备 (50)EHS耳机 (50)恢复出厂设置 (51)通过LCD菜单恢复出厂 (51)通过Web GUI恢复出厂 (51)体验GRP260x (52)图目录图1GRP260x包装清单 (16)图2桌面和壁挂插槽 (17)图3壁挂安装 (17)图4话机背部视图 (18)图5GRP260x待机屏幕 (19)图6LCD显示项定义 (19)图7GRP2601/P键盘 (24)图8GRP2602/P键盘 (25)图9GRP2603/P键盘 (25)图10GRP2604/P键盘 (26)图11GRP260x菜单 (30)图12按键模式配置为线路模式 (32)图13按键模式配置为帐号模式 (33)图143方会议通话界面示例 (38)图15多功能按键页面 (39)图16多功能按键卡片打印选项 (40)图17安装BLF标签纸 (41)图18虚拟多功能按键页面 (41)图19虚拟多功能按键预览 (42)图20下载/上传XML电话本 (46)图21XML远程电话簿 (47)表目录表1GRP260X功能概览 (10)表2GRP2601/GRP2601P技术规格 (11)表3GRP2602/GRP2602P技术规格 (12)表4GRP2603/GRP2603P技术规格 (13)表5GRP2604/GRP2604P技术规格 (14)表6设备清单 (16)表7GRP260x LCD图标 (20)表8GRP260X键盘按键 (26)表9配置菜单 (27)表10呼叫功能 (43)表11呼叫记录图标 (48)文档目的本文档介绍如何通过LCD菜单和Web GUI界面来配置并使用GRP260x。
XGT-用户手册

这个标志引起用户注意,在特定条件下可能会产生电气震动。
■ 设计时的安全说明
小心
4 I/O 信号或通讯线应该设计为离高压电缆或者电源线至少100毫米,以避免噪音或磁场变化的影 响。否则,将引起异常操作。
4 如果有震动存在,让安装的产品免受直接震动。 4 如果存在大量的金属粉尘,确保安装的产品免受金属粉尘以避免异常的发生。
■ 安装时的安全操作
小心
4 在指定的一般标准环境下应用PLC 。 否则,会引起电气震动,火灾,产品异常或者电弧。 4 确保模块安全可靠。如果模块安装不正确,可能会引起异常,错误或者模块掉落。
■ 配线时的安全说明
小心
4应当利用FG端子的3类接线,它是专门用于PLC的。如果端子没有正确地接地,可能会引起异常 操作。
第二章 规格-------------------------------------------------------------------------------- 2-1 ~ 2-4
2.1 一般规格--------------------------------------------------------------------------------------------------------- 2-1 2.2 性能规格-------------------------------------------------------------------------------------------------------- 2-2 2.3 结构特性--------------------------------------------------------------------------------------------------------- 2-3
ThreadXUserGuide-中文手册

常只要几个礼拜的时间。
非黑盒结构 ThreadX 的大部分包括完全的 C 源代码,这排除了许多商业性的内核结构所存在的“黑 盒”问题。在使用 ThreadX 时,程序开发者可以清楚的看到内核运行细节,不存在什么秘 密。 源代码还允许开发程序过程中特殊的修改。虽然没有介绍,但在十分必要时有能力去 修改内核是很有用的。 这些特色对那些习惯于用自己内部内核的开发者来说应该是特别另人振奋的。他们期 望得到源代码并且能够修改内核。ThreadX 对这些人来说是最合适的内核了。
■ 嵌入式应用程序 实时软件 多任务 任务及线程
■ ThreadX 的优点 改进的响应特性 软件维护 增强的吞吐量 处理器隔离 程序划分 好用性 提高开发时间 保护软件投资
ThreadX 概 述
ThreadX 概述
ThreadX 是专为嵌入式应用而设计的高性能实时内核。同其它实时内核不同,ThreadX 具有通用性,使基于 RISC(reduced instruction set computer 简化指令集计算机)和 DSP(Digital Signal Processing 数字信号处理)的小型微控制器的应用程序易于升级。
手册概述
本手册提供了有关 ThreadX——Express Logic 公司高性能实时内核的详尽信息。
指南之意义 本手册适用于嵌入式实时软件的开发者。开发者应熟悉标准实时操作系统的功能及 C
程序设计。
结构 手册包括七章,五个附录以及一篇索引。各部分大致介绍如下: 第一章 ThreadX 概述及其与嵌入式实时系统的关系。 第二章 安装步骤及使用事项。 第三章 详细介绍高性能实时内核——ThreadX 的功能操作。 第四章 详细介绍 ThreadX 应用程序的接口。 第五章 介绍 ThreadX 应用程序的写 I/O 驱动程序。 第六章 ThreadX 处理器自带示例程序的介绍。 第七章 ThreadX 的内部结构。 附录 A ThreadX API 附录 B ThreadX 常量 附录 C ThreadX 数据类型 附录 D Thread 源程序 附录 E ASCII 代码表
Mata手册说明书

Contents[M-0]Introduction to the Mata manualintro.................................................Introduction to the Mata manual[M-1]Introduction and adviceintro........................................................Introduction and advice ing Mata with ado-files first....................................................Introduction andfirst session help........................................................Obtaining help in Stata how.............................................................How Mata works ing Mata interactively LAPACK.........................................The LAPACK linear-algebra routines limits..................................................Limits and memory utilization naming......................................Advice on naming functions and variables permutation................................An aside on permutation matrices and vectors returnedargs..................................Function arguments used to return results source.....................................................Viewing the source code e and specification of tolerances[M-2]Language definitionnguage definition break..............................................Break out of for,while,or do loop class...........................................Object-oriented programming(classes) ments continue...........................Continue with next iteration of for,while,or do loop declarations...................................................Declarations and types do..............................................................do...while(exp) errors.................................................................Error codes exp..................................................................Expressions for......................................................for(exp1;exp2;exp3)stmt ftof...................................................Passing functions to functions goto...................................................................goto label if.............................................................if(exp)...else... op arith........................................................Arithmetic operators op assignment..................................................Assignment operator op colon...........................................................Colon operators op conditional..................................................Conditional operator op increment.......................................Increment and decrement operators op join..............................................Row-and column-join operators op kronecker........................................Kronecker direct-product operator op logical........................................................Logical operators op range..........................................................Range operators op transpose.............................................Conjugate transpose operator12Contents optargs.........................................................Optional arguments pointers..................................................................Pointers pragma...............................................Suppressing warning messages reswords...........................................................Reserved words return........................................................return and return(exp) e of semicolons struct..................................................................Structures e of subscripts syntax............................................Mata language grammar and syntax version............................................................Version control void................................................................V oid matrices while.............................................................while(exp)stmt[M-3]Commands for controlling Matamands for controlling Mata end...................................................Exit Mata and return to Stata mata.....................................................Mata invocation command mata clear.....................................................Clear Mata’s memory mata describe.....................................Describe contents of Mata’s memory mata drop...................................................Drop matrix or function mata help......................................................Obtain help in Stata mata matsave..............................................Save and restore matrices mata memory.........................................Report on Mata’s memory usage mata mlib....................................................Create function library mata mosave................................Save function’s compiled code in objectfile mata rename..............................................Rename matrix or function mata set......................................Set and display Mata system parameters mata stata...................................................Execute Stata command mata which........................................................Identify function namelists........................................Specifying matrix and function names [M-4]Index and guide to functions intro....................................................Index and guide to functions io...................................................................I/O functions manipulation....................................................Matrix manipulation mathematical.........................................Important mathematical functions matrix............................................................Matrix functions programming................................................Programming functions scalar..................................................Scalar mathematical functions solvers................................Functions to solve AX=B and to obtain A inverse standard..........................................Functions to create standard matrices stata........................................................Stata interface functions statistical........................................................Statistical functions string..................................................String manipulation functions utility.......................................................Matrix utility functions [M-5]Mata functions intro...............................................................Mata functionsContents3 abbrev().........................................................Abbreviate strings abs().......................................................Absolute value(length) adosubdir().........................................Determine ado-subdirectory forfile all()..........................................................Element comparisons args()........................................................Number of arguments asarray().........................................................Associative arrays ascii().....................................................Manipulate ASCII codes assert().....................................................Abort execution if false blockdiag()...................................................Block-diagonal matrix bufio()........................................................Buffered(binary)I/O byteorder().............................................Byte order used by computer C()...............................................................Make complex c()...............................................................Access c()value callersversion()........................................Obtain version number of caller cat()....................................................Loadfile into string matrix chdir().......................................................Manipulate directories cholesky().........................................Cholesky square-root decomposition cholinv()...................................Symmetric,positive-definite matrix inversion cholsolve()............................Solve AX=B for X using Cholesky decomposition comb()binatorial function cond()...........................................................Condition number conj()plex conjugate corr()....................................Make correlation matrix from variance matrix cross().............................................................Cross products crossdev()..................................................Deviation cross products cvpermute().................................................Obtain all permutations date()...................................................Date and time manipulation deriv()........................................................Numerical derivatives designmatrix().....................................................Design matrices det()........................................................Determinant of matrix diag().................................................Replace diagonal of a matrix diag().......................................................Create diagonal matrix diag0cnt()..................................................Count zeros on diagonal diagonal().........................................Extract diagonal into column vector dir()....................................................................File list direxists()..................................................Whether directory exists direxternal().....................................Obtain list of existing external globals display().............................................Display text interpreting SMCL displayas()........................................................Set display level displayflush()............................................Flush terminal-output buffer Dmatrix().......................................................Duplication matrix docx*().......................................Generate Office Open XML(.docx)file dsign()............................................FORTRAN-like DSIGN()function e()...................................................................Unit vectors editmissing()..........................................Edit matrix for missing values edittoint()......................................Edit matrix for roundoff error(integers) edittozero().......................................Edit matrix for roundoff error(zeros) editvalue()............................................Edit(change)values in matrix eigensystem()............................................Eigenvectors and eigenvalues4Contentseigensystemselect()pute selected eigenvectors and eigenvalues eltype()..................................Element type and organizational type of object epsilon().......................................Unit roundoff error(machine precision) equilrc()..............................................Row and column equilibration error().........................................................Issue error message errprintf()..................................Format output and display as error message exit()..........................................................Terminate execution exp().................................................Exponentiation and logarithms factorial()..............................................Factorial and gamma function favorspeed()...................................Whether speed or space is to be favored ferrortext()......................................Text and return code offile error code fft().............................................................Fourier transform fileexists().......................................................Whetherfile exists fillmissing()..........................................Fill matrix with missing values findexternal().................................Find,create,and remove external globals findfile().................................................................Findfile floatround().................................................Round tofloat precision fmtwidth().........................................................Width of%fmt fopen()..................................................................File I/O fullsvd()............................................Full singular value decomposition geigensystem().................................Generalized eigenvectors and eigenvalues ghessenbergd()..................................Generalized Hessenberg decomposition ghk()...................Geweke–Hajivassiliou–Keane(GHK)multivariate normal simulator ghkfast().....................GHK multivariate normal simulator using pregenerated points gschurd()...........................................Generalized Schur decomposition halton().........................................Generate a Halton or Hammersley set hash1()...........................................Jenkins’one-at-a-time hash function hessenbergd()..............................................Hessenberg decomposition Hilbert()..........................................................Hilbert matrices I()................................................................Identity matrix inbase()...........................................................Base conversion indexnot()..................................................Find character not in list invorder()............................................Permutation vector manipulation invsym().............................................Symmetric real matrix inversion invtokens()...............................Concatenate string rowvector into string scalar isdiagonal()..............................................Whether matrix is diagonal isfleeting()...........................................Whether argument is temporary isreal()......................................................Storage type of matrix isrealvalues()..................................Whether matrix contains only real values issymmetric().................................Whether matrix is symmetric(Hermitian) isview()....................................................Whether matrix is view J().............................................................Matrix of constants Kmatrix()mutation matrix lapack()PACK linear-algebra functions liststruct()...................................................List structure’s contents Lmatrix().......................................................Elimination matrix logit()...........................................Log odds and complementary log-logContents5 lowertriangle().........................................Extract lower or upper triangle lud()...........................................................LU decomposition luinv()......................................................Square matrix inversion lusolve()...................................Solve AX=B for X using LU decomposition makesymmetric().............................Make square matrix symmetric(Hermitian) matexpsym().......................Exponentiation and logarithms of symmetric matrices matpowersym().........................................Powers of a symmetric matrix mean()............................................Means,variances,and correlations mindouble().................................Minimum and maximum nonmissing value minindex().......................................Indices of minimums and maximums minmax().................................................Minimums and maximums missing().......................................Count missing and nonmissing values missingof()................................................Appropriate missing value mod()..................................................................Modulus moptimize().....................................................Model optimization more().....................................................Create–more–condition negate().......................................................Negate real matrix norm()....................................................Matrix and vector norms normal()................................Cumulatives,reverse cumulatives,and densities optimize().....................................................Function optimization panelsetup()...................................................Panel-data processing pathjoin()....................................................File path manipulation pinv().................................................Moore–Penrose pseudoinverse polyeval()........................................Manipulate and evaluate polynomials printf().............................................................Format output qrd()...........................................................QR decomposition qrinv().............................Generalized inverse of matrix via QR decomposition qrsolve()...................................Solve AX=B for X using QR decomposition quadcross().............................................Quad-precision cross products range()..................................................Vector over specified range rank().............................................................Rank of matrix Re()..................................................Extract real or imaginary part reldif()..................................................Relative/absolute difference rows()........................................Number of rows and number of columns rowshape().........................................................Reshape matrix runiform()..............................Uniform and nonuniform pseudorandom variates runningsum().................................................Running sum of vector schurd()......................................................Schur decomposition select()..............................................Select rows,columns,or indices setbreakintr()..................................................Break-key processing sign()...........................................Sign and complex quadrant functions sin()..........................................Trigonometric and hyperbolic functions sizeof().........................................Number of bytes consumed by object solve tol().....................................Tolerance used by solvers and inverters solvelower()..........................................Solve AX=B for X,A triangular solvenl().........................................Solve systems of nonlinear equations sort().......................................................Reorder rows of matrix6Contentssoundex().............................................Convert string to soundex code spline3()..................................................Cubic spline interpolation sqrt().................................................................Square root st addobs()....................................Add observations to current Stata dataset st addvar().......................................Add variable to current Stata dataset st data()...........................................Load copy of current Stata dataset st dir()..................................................Obtain list of Stata objects st dropvar()...........................................Drop variables or observations st global()........................Obtain strings from and put strings into global macros st isfmt()......................................................Whether valid%fmt st isname()................................................Whether valid Stata name st local()..........................Obtain strings from and put strings into Stata macros st macroexpand().......................................Expand Stata macros in string st matrix().............................................Obtain and put Stata matrices st numscalar().......................Obtain values from and put values into Stata scalars st nvar()........................................Numbers of variables and observations st rclear().....................................................Clear r(),e(),or s() st store().................................Modify values stored in current Stata dataset st subview()..................................................Make view from view st tempname()...............................................Temporary Stata names st tsrevar().....................................Create time-series op.varname variables st updata()....................................Determine or set data-have-changedflag st varformat().................................Obtain/set format,etc.,of Stata variable st varindex()...............................Obtain variable indices from variable names st varname()...............................Obtain variable names from variable indices st varrename()................................................Rename Stata variable st vartype()............................................Storage type of Stata variable st view()..........................Make matrix that is a view onto current Stata dataset st viewvars().......................................Variables and observations of view st vlexists()e and manipulate value labels stata()......................................................Execute Stata command stataversion().............................................Version of Stata being used strdup()..........................................................String duplication strlen()...........................................................Length of string strmatch()....................................Determine whether string matches pattern strofreal().....................................................Convert real to string strpos().....................................................Find substring in string strreverse()..........................................................Reverse string strtoname()...........................................Convert a string to a Stata name strtoreal().....................................................Convert string to real strtrim()...........................................................Remove blanks strupper()......................................Convert string to uppercase(lowercase) subinstr()...........................................................Substitute text sublowertriangle()...........................Return a matrix with zeros above a diagonal substr()......................................................Substitute into string substr()...........................................................Extract substring sum().....................................................................Sums svd()..................................................Singular value decomposition svsolve()..........................Solve AX=B for X using singular value decomposition swap()..............................................Interchange contents of variablesContents7 Toeplitz().........................................................Toeplitz matrices tokenget()........................................................Advanced parsing tokens()..................................................Obtain tokens from string trace().......................................................Trace of square matrix transpose()..................................................Transposition in place transposeonly().......................................Transposition without conjugation trunc()............................................................Round to integeruniqrows()..............................................Obtain sorted,unique values unitcircle()plex vector containing unit circle unlink().................................................................Erasefile valofexternal().........................................Obtain value of external global Vandermonde()................................................Vandermonde matrices vec().........................................................Stack matrix columns xl()............................................................Excelfile I/O class[M-6]Mata glossary of common terms Glossary........................................................................ Subject and author index...........................................................。
threadx学习笔记

tx_ill.s文件用来处理初始化过程中的汇编语言,它是面向处理器和开发工具的。
Void_tx_initialize_low_level{1、CPSCR|= FIQ_ MODE,SET SP_fiq;2、CPSCR|=IRQ_MODE,SET SP_irp;3、CPSCR|=SVC_MODE,SET SP_svc;4、设置中断向量表IRQ_TABLE;5、设置内部TIMER线程的堆栈起始地址,堆栈大小和优先级::tx_timer_stack_start,_tx_timer_stack_size,_tx_timer_priorit;6、设置初始化后未使用内存地址的初始值_tx_initialize_unused_memory;}Tx_tcs.s负责在中断发生时对上次的运行现场进行保存,它保存中断上下文,为了不覆盖R14_irq离得中断返回地址,TCS的返回是通过跳到__tx_irq_processing_return地址做到的。
Tx_TCR.S负责中断处理程序执行完后的处理。
Void _tx_thread_context_save{1、把表示中断嵌套个数的变量_tx_thread_system_state++;2、if _tx_thread_system_state>1,PUSH R0-R3,CPSR,R14 in IRQ stack,B__tx_irq_processing_return;3、else if _tx_thread_current_ptr=0判断是否有线程正在运行,if not ,B_tx_irq_processing_return;4、else,P USH Context_irq in thread’s stack,SP_thread=new SP,B_tx_irq_processing_return;}由于R13和R14在不同的CPU模式下对应的是不同的物理寄存器,所以若要得到中断前的线程堆栈指针,需要先返回到该线程的运行模式,同时禁止中断,取值后再返回到终端模式。
AM35x-OMAP35x-PSP 04.02.00.07 UserGuide 中文手册

AM35x-OMAP35x-PSP 04.02.00.07 UserGuide 中文手册翻译:卢浩转载请注明出处嵌入式爱好者开发群122879839 1 先阅读这个1.1 关于本手册2 安装2.1 系统需求2.2 支持包内容2.3 环境安装2.4 选择启动模式2.4.1 OMAP3EVM (OMAP35x,AM /DM37x)2.4.1.1 用Onenand的EVM板2.4.1.2 用镁光的nand的EVM板2.4.2 AM3517 EVM2.4.3 beagleboard的板子3 x-loader3.1 简介3.2 编译x-loader3.2.1 标记x-loader3.2.2 ECC校验的选择4 U-boot4.1 编译U-boot4.2 U-boot功能4.2.1 OneNAND 支持4.2.1.1 标记坏块4.2.1.2 擦除OneNAND4.2.1.3 写入OneNAND4.2.1.4 OneNAND 的阅读4.2.1.5 擦除OneNAND4.2.2 NAND 的支持4.2.2.1 NAND 布局4.2.2.2 标记坏块4.2.2.3 查看坏块4.2.2.4 擦除Nand4.2.2.5 Nand的阅读4.2.2.6 Nand 的阅读4.2.2.7 选择ECC校验4.2.3 nor的支持(仅在AM3517EVM)4.2.4 MUSB 主机支持4.3 从uboot烧写4.3.1 OneNAND4.3.1.1 保存环境变量4.3.1.2 烧写x-loader4.3.1.3 烧写u-boot4.3.1.4 烧写Linux 内核4.3.1.5 烧写JFFS2 文件系统4.3.2 NAND4.3.2.1 保存环境变量4.3.2.2 烧写x-loader4.3.2.3 烧写uboot4.3.2.4 烧写Linux 内核4.3.2.5 烧写JFFS2 文件系统4.3.3 nor5 linux内核5.1 编译内核5.2 为内核选择对应的nand ecc校验5.3 配置内核5.4 用正确的串口输出设备5.5 创建jffs2 文件系统5.6 启动内核5.6.1 从nand启动5.6.2 从onenand启动5.6.3 从mmc启动5.6.4 从nor启动6 音频驱动程序7 视频显示驱动程序8 视频捕获驱动程序9 USB 驱动程序10 MMC 驱动程序11 以太网驱动程序12 电源管理13 电源管理IC14 TI HECC CAN 控制器先阅读以下内容(非常重要)重要的变化现在,Linux 内核中的NAND 驱动程序使用 1 位硬件ECC校验.。
THREADX操作系统各模块详解第一部分

THREADX深入学习简介最近在做THREADX移植项目,所以在开始学习THREADX操作系统。
想把自己学到的东西总结一下。
学习操作系统时,按照领导的意思把操作系统进行模块划分。
通过查找资料将操作系统划分为任务调度模块、任务管理模块、任务间同步和通信模块、内存管理模块、中断管理模块、时钟管理模块。
下面将分别对各个模块进行分析和研究。
我将深入介绍各个模块的工作原理,通过此文档能对操作系统的工作原理有深入的了解。
首先得我的分析是针对MIPS、ARM、251内核进行分析。
我移植的平台是16位的251平台。
个人认为移植一个操作系统,首先对操作系统的内核调度原理必须十分清楚,然后对你的移植平台架构、指令集也要十分清楚,比如说下面几个方面:1、子程序调用时PC值是怎么被保存得(MPIS,将子程序的返回值存放在了RA寄存器中,251是PC自动入栈(ECALL指令)退出时使用ERET等指令,ARM是在LR寄存器中要计算相应减去的数值)。
2、中断发生时(251PC自动入栈但顺序和子程序调用压入顺序不一样,中断返回使用RETI指令。
MIPS,PC是被存入了EPC寄存器中,使用eret指令。
ARM,LR中数值的计算,赋值给PC即可)2.任务调度操作系统的核心模块就是内核调度。
首先要弄清楚其调度原理。
带着下面几个问题去思考。
1、任务入口函数第一次是怎么被执行的。
2、任务是怎么被切换的。
3、任务是怎么被抢占的。
以上几个问题是任务调度的核心。
带着这几个问题去看内核源码发现任务调度使用的方法就是任务栈和系统栈,内核利用入栈和出栈完成对任务的调度和切换。
而任务被调度起来是依靠timer驱动来工作。
基于此分析可以得出内核调度重点是以下几个方面:1、明白任务栈的构建方式,即任务创建时初始化任务堆栈时保存的数据。
这些数据要根据具体的硬件平台去实现,这个栈的初始化就是解决上面的第一个问题的。
因为在内核调度时,任务第一次被执行是出此栈来执行对应的入口函数的。
RT-Thread用户手册

6.7
线程相关接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 5 5 5 6 9 9 14 18 20 21 22 27 28 29 29 29 29 31 31 34 43 43 43 44 46 47 47 i
5 内核对象模型 5.1 C语言的对象化模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 内核对象模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 线程调度与管理 6.1 实时系统的需求 6.2 线程调度器 . . . 6.3 线程控制块 . . . 6.4 线程状态 . . . . 6.5 空闲线程 . . . . 6.6 调度器相关接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Picokernel 结构 不象其它传统微内核结构的压条法功能(layering kernel functions),ThreadX 服务直 接进入其核心,使得转换和命令的执行尽可能最快,这样的非压条法设计被称为 Picokernel 结构。
手册概述
本手册提供了有关 ThreadX——Express Logic 公司高性能实时内核的详尽信息。
指南之意义 本手册适用于嵌入式实时软件的开发者。开发者应熟悉标准实时操作系统的功能及 C
程序设计。
结构 手册包括七章,五个附录以及一篇索引。各部分大致介绍如下: 第一章 ThreadX 概述及其与嵌入式实时系统的关系。 第二章 安装步骤及使用事项。 第三章 详细介绍高性能实时内核——ThreadX 的功能操作。 第四章 详细介绍 ThreadX 应用程序的接口。 第五章 介绍 ThreadX 应用程序的写 I/O 驱动程序。 第六章 ThreadX 处理器自带示例程序的介绍。 第七章 ThreadX 的内部结构。 附录 A ThreadX API 附录 B ThreadX 常量 附录 C ThreadX 数据类型 附录 D Thread 源程序 附录 E ASCII 代码表
性的中断源。如果处理器有这个能力,则其可以被 ThreadX 所利用;如果没有,则必须由 用户的硬件来提供。
附带说明书 ThreadX 发行时附带一张 CD-ROM,有标准的和完全的两种模式可供选用。其区别仅
在于其中的源代码是否完全。 光盘中的具体内容取决于目标处理器,开发工具,以及所购买的 ThreadX 的包装。下
ANSI C 源代码 ThreadX 最初是用 ANTI C 写的。隐藏对象处理器内核的生成需要用到少量的汇编语言。 这种设计使得把 ThreadX 用到一个新的处理器系列中去的时候在接口问题上非常容易,通
常只要几个礼拜的时间。
非黑盒结构 ThreadX 的大部分包括完全的 C 源代码,这排除了许多商业性的内核结构所存在的“黑 盒”问题。在使用 ThreadX 时,程序开发者可以清楚的看到内核运行细节,不存在什么秘 密。 源代码还允许开发程序过程中特殊的修改。虽然没有介绍,但在十分必要时有能力去 修改内核是很有用的。 这些特色对那些习惯于用自己内部内核的开发者来说应该是特别另人振奋的。他们期 望得到源代码并且能够修改内核。ThreadX 对这些人来说是最合适的内核了。
面列出所有产品所共有的几个重要的文件。
Readme.txt ThreadX 端口的详细信息,包括目标处理器及开发工具。
Tx_api.h C 头文件,包含所有的系统 equates, 数据结构,服务原型。
Tx_port.h C 头文件,开发工具的所有特殊的数据定义及结构。
Demo.c C 文件,一个小的例程。
工具提供了功能强大的目标硬件调试。
ThreadX 使用 ASCII 码格式,要求主机硬盘空间的容量至少为 1 兆字节。
对
参见
对安装对象的要求 ThreadX 要求安装对象的 ROM(只读存储器 (read-only memory))为 2K 字节到 15K 字
节,RAM(随机存储器(random access memory))为 1K 字节到 2K 字节。 为了满足诸如超时设定命令、时间片、程序定时器等功能,隐藏目标硬件必须提供周期
结构选择 ThreadX 只有一类结构可供选择,它常用旁路服务命令错误诊断(bypass service call
error)。如果是在程序的 C 文件中定义的条件编译标志 TX_DISABLE_ERROR_CHECKING,那么 所有基本参数的错误诊断都被禁止。常用这个方法来提高程序的执行(大约可以提高 30%)。 但是只能在程序完全调试过之后才能这么做。
{ /* Create my_thread! */ tx_thread_create(&my_thread, "My Thread", my_thread_entry, 0x1234, first_unused_memory, 1024, 3, 3, TX_NO_TIME_SLICE, TX_AUTO_START); } void my_thread_entry(ULONG thread_input) { /* Enter into a forever loop. */ while(1) { /* Increment thread counter. */ my_thread_counter++; /* Sleep for 1 tick. */ tx_thread_sleep(1); } }
任务及线程 有关任务的另一个重要特性必须指出。任务这个名词可以用在不同的方面,有时指一个 可独立装载的程序;在另外的场合,它可能指一个内部程序段。 在实时操作系统中,有时用进程和线程来代替任务的使用。进程是一个完全独立的程序, 有自己的地址空间;但线程是一个半独立的程序段,在进程内执行。所有的线程共用相同的 进程地址空间。线程管理的开支是很小的。 大多数嵌入式应用程序不能负担面向进程操作系统的内存开支。另外,小的微处理器不 具备支持真正意义上的面向进程操作系统的硬件结构。基于以上这些原因,ThreadX 采用了 线程模式,这对绝大多数的实时嵌入式操作系统来说既有效又实用。 为避免相互混淆,ThreadX 不用“任务(task)”一词,而用了一个相近的词“线程”来
■ 嵌入式应用程序 实时软件 多任务 任务及线程
■ ThreadX 的优点 改进的响应特性 软件维护 增强的吞吐量 处理器隔离 程序划分 好用性 提高开发时间 保护软件投资
ThreadX 概 述
ThreadX 概述
ThreadX 是专为嵌入式应用而设计的高性能实时内核。同其它实时内核不同,ThreadX 具有通用性,使基于 RISC(reduced instruction set computer 简化指令集计算机)和 DSP(Digital Signal Processing 数字信号处理)的小型微控制器的应用程序易于升级。
实时软件 当应用程序软件中涉及到时间因素时,就赋予了实时的概念。一般地,必须在一个时间 段内执行的软件称为实时软件。嵌入式应用程序几乎都是实时的,因为它们和外部世界存在 内在的联系。
多任务 如上所述,嵌入式应用程序有其既定的目的。为达到这个目的,软件必须执行多种任务 或作业。应用程序中的半独立任务部分完成特定的目的,有时有些任务或作业比其它的更重 要。嵌入式应用程序面临的一个主要难题就是在不同的任务中分配处理器。在竞争的任务中 分配处理器是 ThreadX 的首要目的。
UINT
无符号整型。必须是 8 位无符号数据;但通常映பைடு நூலகம்成 16 位或 32 位的有
符号数据。
ULONG 无符号长整型。此类型位 32 位无符号数。
VOID
空类型。
CHAR 8 位字符类型。
其它用于 ThreadX 中的数据类型列在 tx_port.h 文件中。
1
■ ThreadX 概述 Picokernel 结构 ANSI C 源代码 可能的标准
ThreadX 的使用 ThreadX 的使用非常简单。一般地,在使用 ThreadX 运行库 tx.lib 编译,联接时必须包
含 tx_api.h 文件。 建立一个 ThreadX 程序主要有四个步骤,具体如下: 第一步:将 tx_api.h 文件包含于所有使用 ThreadX 服务和数据结构的应用程序。 第二步:建立 C main 函数。此 main 函数必须调用 tx_kernel_enter 以达到开始 ThreadX 的目的。如果没有经过 ThreadX 特定的初始化,可以通过增加其优先权而进 入到内核中。 (注意,ThreadX 的入口函数 tx_kernel_enter 无返回,所以在其后使用任何进 程及函数调用的时候要特别小心。) 第三步:建立 tx_application_define 函数。这是初始系统资源创建的地方。这些资源包 括线程、队列、内存缓冲池、事件标志组以及信号。(注意,内存中第一个可 用的地址由 ThreadX 提供给此程序。) 第四步:应用程序源的编译及与 ThreadX 运行库 tx.lib 的联接。这一步将产生可以下载 到目标体中去并能得到执行的映像。
问题处理 ThreadX 的每一个端口分配一个程序。最好先使系统运行,无论是在真正的目标硬件上
还是在特定的示范环境中。 通过执行 build_up.bat 批处理文件创建系统程序。此批处理文件生成一个下载程序用
的映像。 如果程序系统不工作,通过以下方法来缩小问题的范围: 1. 决定程序的执行需要多少时间; 2. 增加堆栈的容量; 停止定时器中断以及其他任何可以引起问题的疑点。
一个可能的标准 由于 ThreadX 的通用性,高性能的 picokernel 结构及强大的可移植性,ThreadX 有可能 成为嵌入式程序的工业标准。
嵌入式应用程序
嵌入式应用程序是指在类似于手机、通讯设备、汽车引擎、激光打印机、医疗设备等 产品的微处理器中执行的程序。嵌入式应用程序的另一个显著特点是其软件和硬件有其特定 的用途。
ThreadX 的数据类型
在 ThreadX 中除通常控制体系的数据类型外,还包括一系列特殊的称为接口的数据类
型。这些特殊的数据类型可以直接映射成 C 编译器的数据类型,以此来确保在不同 C 编译
器间的通用性。详细的操作可以在附带磁盘的 tx_port.h 文件中找到。
下面是 ThreadX 命令中的数据类型及其相关意义:
Build_ap.bat MS-DOS 批处理文件,讲述如何建立 ThreadX 实例。