官方网址:https://doc.micrium.com/pages/viewpage.action?pageId=12851586

V2.92.14

Release Date

December 8, 2017

New Features

  • [200] Added a new port for the RISC-V architecture

Bug Fixes

  • [259] Cortex-A50 port used improper data width when writing to OSRunning.

V2.92.13

Release Date

August 17, 2017

New Features

  • [69] Added a new port for the Synopsys ARC EM6
  • [70] Added a new port for the ARM Cortex-A50 family
  • [71] Added SystemView Trace support.

Improvements

  • [73] Cortex-M0 and Cortex-M ports reworked to match the uCOS-III ports.
  • [107] Added app_hooks.c and app_cfg.h templates.
  • [175] Added trace support to the Cortex-M port.
  • [186] Added trace support to the RX port.

Deprecation

  • [176] Removed ARM-Cortex-A8 port (Replaced by ARM-Cortex-A).
  • [176] Removed ARM-Cortex-A9 port (Replaced by ARM-Cortex-A).
  • [176] Removed ARM-Cortex-R4 port (Replaced by ARM-Cortex-A).
  • [176] Removed ARM-Cortex-M3 port (Replaced by ARM-Cortex-M).
  • [176] Removed ARM-Cortex-M4 port (Replaced by ARM-Cortex-M).
  • [176] Removed RX-FPU port (Replaced by ARM-Cortex-RX).
  • [176] Removed RX200 port (Replaced by ARM-Cortex-RX).
  • [176] Removed RX600 port (Replaced by ARM-Cortex-RX).
  • [176] Removed RX610 port (Replaced by ARM-Cortex-RX).
  • [176] Removed RX62N port (Replaced by ARM-Cortex-RX).

V2.92.12

New Features & Improvements

  • ARM-Cortex-M Port: Added Generic port forARMCortex-M3,M4andM7devices.
  • ARM-Cortex-M0 Port: Added support for ARM Cortex-M0+ devices.
  • MSP430x Port: Added CCS toolchain support for MSP430x5xx devices.
  • RL78 Port: Added GNURL78 toolchain support.
  • TI C2000 (C28x) Port: Added support for Piccolo and Delfino devices.

Bug Fixes

  • Core: OSSafetyCritical Flag now checked in all OS???Create() and OS???Del() functions.

Ports

  • ARM-Cortex-A Generic: FP execution context now properly restored.
  • ARM-Cortex-M0: Stack usage is now AAPCS-compatible.
  • ARM-Cortex-M3: Stack usage is now AAPCS-compatible and port no longer wastes stack space for every task.
  • ARM-Cortex-M4: Port no longer wastes stack space for every task.

V2.92.11

Releasedate:2014/04/16

This is a minor release as it contains only a few items that were not caught prior to releasing V2.92.10.

CHANGES

1)        OS_TASK.C:

In OSTaskResume(), fixed resuming a task that was suspended while multi-pending.

V2.92.10

Releasedate:2013/12/27

This is a minor release as it contains only a few items that were not caught prior to releasing V2.92.09.

CHANGES

1)        OS_TLS.C:

Fixed compilation errors when using the full IAR DLIB library.

V2.92.09

Releasedate:2013/08/19

This is a minor release as it contains only a few items that were not caught prior to releasing V2.92.08.

CHANGES

1)        OS_CORE.C:

In OS_EventTaskRemove(),ptcb->OSTCBEventPtr is now set to (OS_EVENT *)0 before exiting. This created problems when changing the priority of a task made ready to run but hasn’t been scheduled yet.

V2.92.08

Releasedate:2013/03/31

This is a minor release and only contains the addition of one feature: Thread Local Storage (TLS)

ADDED FEATURES

Thread Local Storage (TLS) allows each task to have task specific variables that are typically required by compilers and their run-time library.  TLS is optional and only currently available for a couple of compilers (CCES from Analog Devices and Embedded Workbench from IAR).  TLS requires that you enable this feature by setting the TLS table size (see the MicroC/OS-II user’s manual) through the #define OS_TLS_TBL_SIZE and, if defined, must be greater than 0.

TLS is mandatory if you use non-reentrant library functions that are not protected by either a mutex or a semaphore. Forexamplethe‘strtok()’ function needs to keep a copy of a pointer forfurtherinvocationsofstrtok().  This local pointer is now saved as part of the TLS management when TLS is enabled and thus does not require that you protect the non-reentrant code with a mutex or a semaphore.

1)  A number of ‘internal’ functions have been added to support TLS.  However, as the user, you only need to:

  1. Include ‘os_tls.c’ in your build
  2. Set the value of OS_TLS_TBL_SIZE to a size sufficiently large as required by the tool vendor support by this TLS implementation.
  3. Enable semaphores (set OS_SEM_EN to 1 in os_cfg.h).

V2.92.07

Releasedate:2010/09/20

This is a minor release as it contains only a few items that were not caught prior to releasing V2.92.

ADDED FEATURES

1) Added OSTaskRegGetID() which allows your application to obtain a task register dynamically (i.e. at run-time) instead of using #define to set task register IDs. It’s important that you either use ‘dynamic task register ID allocation’ or ‘static register ID allocation’ but not both.  The preferred method is to use OSTaskRegGetID() throughout your code.

2)  Added #define MICRIUM_SOURCE to all the .C files to identify that the files contain Micrium source files.

3)  Version numbering now contains 3 fields: X.YY.ZZ where X is the version of the kernel (µC/OS-II is 2), YY is the major release number (92) and ZZ is a minor release number (07).  Calling OSVersion() will return the version number multiplied by 10000.  In other words, V2.92.07 will be returned as 29207.

CHANGES

1)        OS_CORE.C:

In OSSchedUnlock(), moved the test to check if called from an ISR before the test of the lock nesting level.

2)        OS_FLAG.C:

Added ‘pend_stat’ to OS_FlagTaskRdy() to allow OSFlagDel() to returns OS_ERR_PEND_ABORT when called with the OS_DEL_ALWAYS option.

3)        OS_MBOX.C:

OSMboxDel() now returns OS_ERR_PEND_ABORT when called with the OS_DEL_ALWAYS option.

4)        OS_MUTEX.C:

Changed PIP to PCP to reflect that the mutex services implement a ‘Priority Ceiling Protocol’ instead of a ‘Priority Inheritance Protocol’.

Added an option to OSMutexCreate() to allow to disable the priority ceiling protocol making the mutex behave like a plain binary semaphore.  This is done by specifying ‘OS_PRIO_MUTEX_CEIL_DIS’ for the ‘prio’ argument.

5)        OS_Q.C:

OSQDel() now returns OS_ERR_PEND_ABORT when called with the OS_DEL_ALWAYS option.

6)        OS_SEM.C:

OSSemDel() now returns OS_ERR_PEND_ABORT when called with the OS_DEL_ALWAYS option.

7)        OS_TASK.C:

Added OSTaskRegGetID() to dynamically assign task IDs instead of assigning task IDs statically through #define constants.  It’s important that you either use ‘dynamic task register ID allocation’ or ‘static register ID allocation’ but not both.  The preferred method is to use OSTaskRegGetID() throughout your code.

You now need to allocate an INT8U variable for each task register IDs and use those variables to specify the desired task register.  In other words:

INT8U  MyTaskRegID;

:

:

MyTaskRegID = OSTaskRegGetID(&err);

:

:

7)        uCOS_II.H:

Added OS_PRIO_MUTEX_CEIL_DIS

Changed OS_ERR_PIP_LOWER to OS_ERR_PCP_LOWER

Added OS_ERR_NO_MORE_ID_AVAIL

Changed OSMutexPIP to OSMutexPCP in the OS_MUTEX_DATA structure.

Added the variable OSTaskRegNextAvailID

Added the prototype for OSTaskRegGetID()

V2.92

Releasedate:2010/09/20

This is a minor release as it contains only a few items that were not caught prior to releasing V2.90.

CHANGES

1)        OS_TASK.C:

Corrected error description in OSTaskCreateExt() and OSTaskCreate() for return error OS_ERR_PRIO_EXIST.

2)        OS_TASK.C:

Added safety critical check for ‘perr’ argument in OSTaskRegGet() and OSTaskRegSet().

3)        OS_TASK.C:

Changed OSTaskStkChk() to return used/free stack space in number of entries.

4)        OS_TMR.C:

Overwrite timer name to ‘?’ if a NULL ‘pname’ argument is passed to OSTmrCreate() to prevent statistics and kernel awareness to try to de-reference a NULL pointer.

5)        OS_CORE.C:

Added extended argument check for NULL pointer passed to OS_StrLen().

6)        OS_CORE.C:

Corrected comment on OS_TaskStatStkChk() to reflect used stack space stored in number of entries.

7)        uCOS_II.H:

Corrected comment on OS_STK_DATA to reflect used/free stack space in number of entries.

8)        All Files:

Added return statements following all OS_SAFETY_CRITICAL_EXCEPTION() macros to allow custom implementation to continue execution.

V2.90

Releasedate:2010/05/18

This is a minor release as it contains only a few items that were not caught prior to releasing V2.89.

CHANGES

1)        OS_CORE.C:

Added OSSafetyCriticalStart() to indicate that all initialization has been completed and that kernel objects are no longer allowed to be created.

2)        All Files:

Modified the source code to reduce the number of MISRA-C 2004 rules not respected:

8.5 - there shall be no definition of objects or functions in a header file

14.7 - a function should have a single point of exit

15.2 - every non-empty case clause in a switch statement shall be terminated
with a break statement

15.4 - only one case - a switch expression should not represent a Boolean value

17.4 - array indexing shall only be applied to objects defined as an array type

17.4 - pointer arithmetic should not be used

3)        uCOS_II.H:

Corrected compilation error when OS_EVENT_EN is disabled and OS_FLAG_EN is enabled.

4)        OS_FLAG.C:

Replaced safety critical test to check OSSafetyCriticalStartFlag set by OSSafetyCriticalStart() on OSFlagCreate().

5)        OS_MBOX.C:

Replaced safety critical test to check OSSafetyCriticalStartFlag set by OSSafetyCriticalStart() on OSMboxCreate().

6)        OS_MEM.C:

Replaced safety critical test to check OSSafetyCriticalStartFlag set by OSSafetyCriticalStart() on OSMemCreate().

7)        OS_MUTEX.C:

Replaced safety critical test to check OSSafetyCriticalStartFlag set by OSSafetyCriticalStart() on OSMutexCreate().

8)        OS_Q.C:

Replaced safety critical test to check OSSafetyCriticalStartFlag set by OSSafetyCriticalStart() on OSQCreate().

9)        OS_SEM.C:

Replaced safety critical test to check OSSafetyCriticalStartFlag set by OSSafetyCriticalStart() on OSSemCreate().

10)      OS_TASK.C:

Replaced safety critical test to check OSSafetyCriticalStartFlag set by OSSafetyCriticalStart() on OSTaskCreateExt() and OSTaskCreate().

11)      OS_TMR.C:

Replaced safety critical test to check OSSafetyCriticalStartFlag set by OSSafetyCriticalStart() on OSTmrCreate().

V2.89

Releasedate:2009/06/09

This is a minor release as it contains only a few items that were not caught prior to releasing V2.88.

CHANGES

1)        All Files:

Added ‘u’ as a suffix to all constant values to denote that these numbers are unsigned.  This was done to satisfy one of the MISRA-C:2004 rules.

Added cast to (INT8U *) for all constants strings.

2)        OS_CORE.C:

The ‘pname’ argument of OSEventNameGet() needed to be a ‘**pname’ instead of ‘*pname’.

If OS_TASK_SUSPEND_EN is not set to 0 then OS_TaskStat() will call OSTimeDly(OS_TICKS_PER_SEC) if OSIdleCtrMax is zero.

3)        OS_MEM.C:

The ‘pname’ argument of OSMemNameGet() needed to be a ‘**pname’ instead of ‘*pname’.

4)        OS_MUTEX.C:

Needed to set OSPrioCur to ‘prio’ in internal function OSMutex_RdyAtPrio().

5)        OS_TASK.C:

The ‘pname’ argument of OSTaskNameGet() needed to be a ‘**pname’ instead of ‘*pname’.

Added OS_TaskReturn() to catch tasks from returning without deleting themselves.  This function requires that a newhookfunctionbedeclared: OSTaskReturnHook().

6)        OS_TASK.C:

The ‘pname’ argument of OSTaskNameGet() needed to be a ‘**pname’ instead of ‘*pname’.

V2.88

Releasedate:2009/01/21

This is a minor release as it contains only a few items that were not caught prior to releasing V2.87.

CHANGES

1)        OS_CORE.C:

OSIntExit() and OS_Sched() have changed slightly because of a boundary condition found with the Cortex-M3 port. Specifically, we needed to move the statement:

OSTCBHighRdy = OSTCBPrioTbl[OSPrioHighRdy];

Before testing for the priority.

2)        uCOS_II.H:

The function prototype for OSEventPendMulti() incorrectly declared the timeout as an INT16U instead of an INT32U since we changed all time delays and timeouts to nowuse32-bit values.

3)        All Files:

Changed the way functions are declared to be consistent with the prototypes in ucos_ii.h.

V2.87

Releasedate:2009/01/07

This is a major release as it contains changes to some of the elements of data structures as well as #define configuration constants.  Also, some of the functionality has changed but this should not have any significant impact.

If you are using a Kernel Awareness plug-in for some of the debuggers, you will need to obtain a newer version of the Kernel Awareness plug-in which is compatible with V2.87 or higher. This is because ASCII strings for names are now referenced by using a pointer instead of storing the ASCII name in the kernel object.

UPGRADING TO V2.87

You should follow these steps in order to upgrade from a previous version to V2.87.

1)        OS_CFG.H:

You no longer need to specify the ‘size’ of ASCII strings used for names.  That’s because we now store a pointer to the name instead of actually allocating storage for it in the corresponding kernel object.  This was done to significantly reduce the amount of RAM needed in your application.  You will need to enable this feature.  Follow the following table:

This #define …

Changed to

OS_EVENT_NAME_SIZE

OS_EVENT_NAME_EN

OS_TASK_NAME_SIZE

OS_TASK_NAME_EN

OS_FLAG_NAME_SIZE

OS_FLAG_NAME_EN

OS_MEM_NAME_SIZE

OS_MEM_NAME_EN

OS_TMR_CFG_NAME_SIZE

OS_TMR_CFG_NAME_EN

The new value of these #defines are either 0 (to disable naming the object) or 1 (to enable naming the object).

2)        OS_TIME.C:

OSTimeDly() now accepts a 32-bit argument instead of a 16-bit argument.  This was done to allow longer time delays and also to simplify OSTimeDlyHMSM().  In most cases, you will not need to change anything in your code.

3)        OS_CORE.C:

OS_StrCopy() has been eliminated since it’s no longer used by µC/OS-II.  You should not have been using this function in your code since it was meant to be an internal function.  This change should thus not cause any problem.

4)        OS_CORE.C:

Added task specific registers.  You can have as many as OS_TASK_REG_TBL_SIZE 32-bit unsigned registers for each task.  These registers ARE NOT the same as the CPU registers; they are more like task specific variables.  These ‘registers’ are typically used for such things as ‘error codes’ (orerrno in other operating systems).  You can also communicate information to tasks via these registers.

5)        OS_MBOX.C:

Timeouts on OSMboxPend() are now 32-bit values.

6)        OS_MUTEX.C:

Timeouts on OSMutexPend() are now 32-bit values.

7)        OS_Q.C:

Timeouts on OSQPend() are now 32-bit values.

8)        OS_SEM.C:

Timeouts on OSSemPend() are now 32-bit values.

9)        OS_TASK.C:

You can set and get task registers (see item 4 above) by calling OSTaskRegSet() and OSTaskRegGet(), respectively.  Again, task registers ARE NOT the same as CPU registers.

10)      OS_TMR.C:

OSTmr_Lock() and OSTmr_Unlock() have been replaced with OSSchedLock() and OSSchedUnlock(), respectively.  Now, timers no longer need to rely on semaphores being available.  Also, this allows you to call other timer services from the timer callback.

V2.86

Releasedate:2007/09/12

This is a major release as it contains a new feature called ‘Multi-Pend’ (implemented in OSEventPendMulti()) whichallowsatasktopendonmultipleobjects(semaphores, mailboxes or queues).  If any one of those objects is posted to, the function returns and indicates which (or all) events posted.

Multi-pend is the only feature added in this version and a number of changesthroughoutthecodehasbeenimplementedinorder to support this new feature.

Details on how to use OSEventPendMulti() can be found in the µC/OS-II reference manual.

UPGRADING TO V2.86

You should follow these steps in order to upgrade from a previous version to V2.86.  Even though only Multi-Pend was added in V2.86, some of the items below are repeated from previous versions because they are important to follow.

1)        Timer Manager:

Timers MUST now be created by OSTmrCreate() before they can be used.  In V2.82, a timer was created and started when you called OSTmrStart().  Now you MUST call OSTmrCreate() and then OSTmrStart() to create and start the timer, respectively.

It is now your responsibility to delete a timer when it is no longer being used.

The Timer Manager user-available functions are now:

OSTmrCreate()

OSTmrDel()

OSTmrNameGet()

OSTmrRemainGet()

OSTmrStart()

OSTmrStop()

To create and start a timer, you need to call OSTmrCreate() and then OSTmrStart().  When you are done using a timer, you can delete it by calling OSTmrDel().

2)        TRUE and FALSE changed to OS_TRUE and OS_FALSE:

µC/OS-II now uses and returns OS_TRUE and OS_FALSE instead of TRUE and FALSE.  If you were using TRUE and FALSE in your application you will either need to define TRUE and FALSE yourself or change those to OS_TRUE and OS_FALSE.

3)        Create APP_CFG.H:

As of V2.81, you need to create a file called APP_CFG.H which would reside in your project.  APP_CFG.H is used to hold configuration information about your project.  Specifically, we expect that you place task priorities, task stack sizes and other application related configuration information.  The following page shows an example of the contents of APP_CFG.H.

4)        Include OS_TMR.C in your project:

As of V2.81, you need to include OS_TMR.C in your builds in order to obtain the new services provided in OS_TMR.C and avoid compiler warnings/errors.

5)        New #defines are needed in OS_CFG.H:

You will need to include the following #defines (they are found in OS_CFG_R.H, the reference file for OS_CFG.H).  See also the configuration manual:

OS_APP_HOOKS_EN

OS_EVENT_MULTI_EN

OS_TMR_EN

OS_TMR_CFG_MAX

OS_TMR_CFG_NAME_SIZE

OS_TMR_CFG_WHEEL_SIZE

OS_TMR_CFG_WHEEL_SIZE

OS_MBOX_PEND_ABORT_EN

OS_Q_PEND_ABORT_EN
OS_SEM_PEND_ABORT_EN

6)        Add OS_TASK_TMR_STK_SIZE:

If you use the timer manager, you will need to define the size of the timer task stack, i.e. OS_TASK_TMR_STK_SIZE.  This is declared in your project’s OS_CFG.H.

7)        Add OS_TASK_TMR_PRIO:

If you use the timer manager, you will need to define the priority of the timer manager task, i.e. OS_TASK_TMR_PRIO.  This is declared in your project’s APP_CFG.H.

8)        Place prototypes in OS_CPU.H:

As of V2.81, it’s IMPORTANT that you place the prototypes for OSCtxSw(), OSIntCtxSw() and OSStartHighRdy() in OS_CPU.H.  Typically, these functions would be prototyped as follows but, depending on the compiler, they may need to be different:

void  OSStartHighRdy(void);

void  OSIntCtxSw(void);

void  OSCtxSw(void);

9)        Start using OS_ERR_??? as error return values:

We recommend that you start using the new #define constants for error return values.  All error return values start with OS_ERR_ for consistency.

10)      OS????NameGet() and OS????NameSet() not callable from ISRs:

Since OS????NameGet() and OS????NameSet() can no longer be called from ISRs, make sure your code didn’t make use of those in ISRs.

11)      OSMutexAccept() returns a BOOLEAN:

Since OSMutexAccept() now returns a BOOLEAN make sure you change your code accordingly.

CHANGES

os_core.c

OSEventPendMulti() was added.

Optimized OS_EventTaskRdy() and added support for multi-pend.

Optimized OS_EventTaskWait().

Removed OS_EventTOAbort() and added OS_EventTaskWaitMulti(), OS_EventTaskRemove() and OS_EventTaskRemoveMulti().

Optimized OS_TaskStat().

os_mbox.c

Rearranged OSMboxPend() to support multi-pend.

os_mutex.c

Rearranged OSMutexPend() for consistency.

os_q.c

Rearranged OSQPend() to support multi-pend.

os_sem.c

Rearranged OSSemPend() to support multi-pend.

os_task.c

Made cosmetic changes to OSTaskChangePrio() and added support for multi-pend.

Added support for multi-pend in OSTaskDel().

ucos_ii.h

Added support for multi-pend.

转载于:https://www.cnblogs.com/xiaokangkp0602/p/9072612.html

µC/OS-II Release Notes相关推荐

  1. Salt2019.2.0 Release Notes (Codename Fluorine) 新版本功能特性

    SaltStack是基础设施管理的革命性方法,能够以速度取代复杂性. SaltStack足够简单,可以在几分钟内运行,可扩展到足以管理数以万计的服务器,并且速度足以在几秒钟内与每个系统进行通信.从服务 ...

  2. ArduPilot Copter Release Notes 中文翻译

    ArduPilot Copter Release Notes: ------------------------------------------------------------------ C ...

  3. UART0串口编程(四):UART0串口编程之在UC/OS—II中遭遇的危机

    UART0串口编程之在UC/OS-II中遭遇的危机 一.潜在的危机 1.在uc/os操作系统中设计串口编程时,由于ISR和多个任务并发执行,情况比较复杂.尤其是接收状态为被动状态时,只能靠串行口中断来 ...

  4. Lab 6:uC/OS II

    为什么80%的码农都做不了架构师?>>>    目标: 移植uC/OS II到RPi上,实现两个任务的调度.这两个任务能轮流点亮LED,并通过串口发送消息表明自己正在运行 具体步骤: ...

  5. Altiris™ IT Management Suite 7 Release Notes

    Introduction Altiris™ IT Management Suite from Symantec is the industry's most comprehensive and int ...

  6. OpenDaylight系类教程(十二)-- Release Notes

    2019独角兽企业重金招聘Python工程师标准>>> Release Notes Target Environment For Execution The OpenDaylight ...

  7. Release notes for VPP 22.10

    本次发布新增了212个提交,包括118个修复. 关于本次发布的更多信息,请访问:https://gerrit.fd.io/r/gitweb?p=vpp.git;a=blob;f=docs/aboutv ...

  8. 嵌入式实时操作系统μC/OS II(一)

    嵌入式实时操作系统μC/OS II 为什么要学习μC/OS-II ㈠.凡从事嵌入式系统开发工作的人,必须对嵌入式操作系统有足够的了解. ㈡.对于初学者,从μC/OS-II开始是个明智的选择. 1.μC ...

  9. Release notes for VPP 22.06

    本次发布新增了485个提交,包括230个修复. 发布亮点 针对5G的VPP Flow API增强: 通过DPDK插件中的通用流实现5G增强 为5G启用RSS队列组操作 为CSIT添加测试场景,包括: ...

  10. Tesla FSD 自动驾驶软件升级版本说明书解析二(Beta v10.12 Release Notes)

    Tesla FSD软件的版本说明书写得十分技术流,里面会详细列举新增了什么feature.修复了什么bug.采用了什么方法(算法还是数据等)提升了多少指标之类的信息,有助于从业人员了解Tesla的底层 ...

最新文章

  1. python bs4 安装_Python安装Bs4的多种方法
  2. Openstack_通用模块_Oslo_vmware 创建 vSS PortGroup
  3. 互联网1分钟 |1214
  4. 【网址收藏】rancher镜像源仓库
  5. DCMTK:测试字符串OFString实用程序
  6. 11.1.5 练习题
  7. 获取当前iframe动态加载文档的href
  8. java中的softreference_Java中的SoftReference和WeakReference有什么区别?
  9. Java 报表工具选择
  10. 计算机印屏幕功能无法使用,计算机电脑管家多屏协同功能无法使用
  11. Go语言攻略:“面向对象”
  12. CurrentThread
  13. 中专计算机基础期末考试题,职业中专第一学期计算机应用基础WIN7和Word2010版期末考试题.doc...
  14. JAVA编码(37)—— Java字符串转换为MAP对象
  15. C语言家谱管理程序,[C语言]家谱 - 代码贴 - BCCN
  16. iOS及Mac开源项目和学习资料
  17. 怎么从STM32将代码移植到海思开发板Hi3861
  18. DENSE 数据集 - STF 数据集(CVPR 2020)
  19. AI 在视频领域运用—弹幕穿人
  20. 融跃财经:37万人被骗230亿,汪涵代言的APP被查

热门文章

  1. 安装Oracle 19c 的系统配置要求
  2. 修改Android系统配置文件build.prop
  3. 运动目标跟踪(十一)--CN及CSK跟踪原理
  4. SQL - 多字段组合升序ASC降序DESC
  5. RC / RL串联电路计算
  6. 求解字谜游戏java_有趣的字谜游戏,一起来解锁答案吧!
  7. 日常工作常用的几款小工具
  8. Linux下使用php实现office转PDF
  9. 通过百度地图批量查询经纬度/通过经纬度批量查询县市
  10. PC-红警联机问题与下载