uItron内核原理和服务调用--Kernel篇

uITRON4.0 标准, 日本最普遍的RTOS 在嵌入式领域,大家一般知道VXwork,ecos等,但是不知道uITRON,这是日本最为普遍的RTOS。 立即下载

转载:http://hi.baidu.com/qinzhispace/item/46a0dfe13131cf216dabb8a7

一:Kernel篇

1.描述:uItron内核,是操作系统的核心,可以实时多任务处理,它有三个主要的概要:
1.1响应事件:(Response to events)认可的事件可以异步的产生,并且可以立即执行一个任务去处理这 
个事件。
1.2任务调度:(Task scheduling)任务的调度依赖于任务的优先级。
1.3执行服务调用(Service call execution)在任务中,为了处理不同的要求,调用服务函数,可以执行适当
的处理。

2.功能:一个应用程序可以利用服务函数去实现大部分内核的功能
2.1任务管理功能:当一个任务在执行的时候,CPU被分配给这个任务,由内核控制CPU分配的指令和任务
的开始和结束,多任务可以利用共享堆栈的方法共用一个堆栈。
2.2任务同步管理功能:为任务执行基本的同步处理,例如,执行任务的挂起,恢复和任务事件的标志位处理。
2.3同步和通讯管理功能:利用事件标志位(event flag),信号量(semaphres),队列(data queue)和
邮箱(mailbox)可以为为内部的任务实现同步和通讯。
2.4扩展同步和管理功能:利用互斥(mutex),消息缓存(message buffer)也可以为内部实现同步和通
讯。
2.5内存池管理功能:在用户的系统里,管理没有被用过的内存作为一个内存池,一个任务动态取得的块石
来自于内存池,并且可以归还个内存池,作为内存池的大小可以是固定的或者是可变的。
2.6时间管理功能:为系统管理与时间相关联的信息,为了控制的目的,还要监听任务的时间。
2.7系统状态管理功能:执行系统状态功能,例如,修改或者查询环境和系统状态。
2.8中断管理功能:开始时适当的中断处理响应外部中断,这个中断处理执行适当的中断处理,并且通报任
务的中断。
2.9服务调用管理功能:定义或者调用一个扩展的服务调用。
2.10系统配置管理功能:执行系统配置管理功能,例如定义CPU异常handler和读内核版本号。
2.11DSP/FPU支持:在多任务处理环境中,支持DSP/FPU,每个任务可用特殊地注册去执行D/F指令。

3.处理单元(Processing Units)一个应用程序被执行在下列的处理单元中
3.1任务(Task):一个任务是一个处理单元,有多任务处理控制。
3.2任务异常处理程序(Task Exception Processing Routine)当一个任务通过任务异常处理调用函数要求异常处理的时候,这个任务异常处理程序会被执行。
3.3中断Handler(Interrupt Handler):当一个中断发生的时候,一个中断Handler会被执行。
3.4CPU异常Handler(CPU Exception Handler ):当一个CPU异常发生的时候,一个CPU异常Handler会被执行。
3.5Time Event Handler(Cyclic Handler,Alarm Handler,Overrun Handler)当一个特殊的循环或者时间到了的时候,一个时间事件Handler会被执行。
3.6Extended Service Call:扩展服务调用。

4.优先级(Precedence):每个处理单元按一下的优先级顺序被执行:
中断Handler,Time event handler,CPU exection handler,Dispatche ,Task,任务异常处理。
4.1中断Handler(Interrupt handler),时间事件(Time event handler)和CPU异常处理Handler(CPU Excepion handler)它们的优先级处理:当有高优先级中断发生,中断Handler就会变成优先级最高的这个。一个时间事件Handler优先级与一个定时中断时一个级别。
4.2分派(Dispatcher):分派是内核处理过程,是由内核转换一个任务去执行。
4.3任务(Task):任务的遇险记依赖于任务的优先级定义。
4.4任务异常处理(Task Exception Process):任务异常处理程序的优先级比该任务高,比其它高优先级任务低。
4.5特殊情况:当以下的服务函数被调用,优先级不使用上面的情况:
4.5.1当dis_dsp被调用,这个优先级在上面提到的4.1和4.2之间,利用dis_dsp这个状态返回到从前的状态。
4.5.2当loc_cpu或者iloc_cpu被调用,这个优先级是与Interrupt handler一致的,这个interrupt handler的级别与CFG_KNLMSKLLL一致。调用unl_cpu或者iunl_cpu状态会返回到从前的状态。
4.5.3当这个interrupt mask级别被改变除了0以外,利用chg_ims这个优先数同interrupt handler一样,是同一个级别。

5.系统状态(System state):系统状态定义了以下几个状态:任务环境状态/无任务环境状态;可执行分派状态/不可执行分派状态;CPU-locked状态/CPU-unlocked状态。
5.1任务环境状态和无任务环境状态:在系统被执行,无论在任务环境状态或者无任务环境状态下,任务和无任务环境状态之间的不同之处在下面的表1中:
Item Task Context State Non-Task Context State Available service calls Service calls that can be called from the task context Service calls that can be called from the non-task context Task scheduling Refer to Does not occur

以下的处理被执行且在无任务环境中:Interrupt handler;CPU exception handler;Time event handler(cyclic handler,alarm handler,overrun handler);调用chg_ims服务函数去改变interrupt mask的值(除了0以外)的地方。
5.2分派不可以的状态和分派可以的状态(Dispatch-disable State/Dispatch-enable State)系统无论是放置在不可以分派的状态下还是可以分派的状态下。在不可以分派的状态下,任务调度是不允许的,在任务处于WAITING的状态下, 调用服务函数是没有用的。
在任务执行期间,用这个dis-dsp服务调用函数可以将系统状态变为分派不可以的状态,用这个ena_dsp服务函数将要返回系统的状态到分派可以的状态,用这个sns_dsp服务函数,可以检查系统状态是在分派不可以的状态或者是分派可以的状态。
总结:在dispatch-disable和dispatch-enable的过程中是独占cpu的使用时间,这段时间,任务不可以调度。
5.3CPU-locked状态和CPU-unlocked状态
系统无论放置在CPU-Locked状态或者CPU-Ulocked状态下,在cpu-locked的状态下,中断和任务调度是不允许的。注意,无论如 何,如果在配置中,中断的mask级别比那个专用的任务级(CFG_KNLMASKLVE)高,这样是允许的,在这个状态下,在任务处于WAITING状 态下调用服务函数是无用的。

在任务执行期间,用loc_cpu或者iloc_cpu函数可以将系统的状态变为CPU-Locked状态,用unl_cpu或者iunl_cpu函数可 以将系统的状态返回到CPU-Onlocked状态,另外用sns_loc函数可以检查系统状态是CPU-Locked状态或者不是。

6.对象(objects)
对象是被服务函数操作的任务和信号量,对象也会被标识为ID号或者object号,在配置中最大的号能被指定给几乎所有的object。

7任务(Task)
在实时多任务处理,用户按照设置的任务准备一个应用程序,这个程序能够独立地,平行地被执行。
利用服务函数,可以使一个任务与其他任务之间通信,利用外围设备或mcu,服务函数可以被用作是kernel处理事件异步的发生。
7.1任务的状态和转变(Task State and Trunsition)
在用户的系统里,任务可以处于一下七种状态:
7.1.1不存在的状态(NON-EXISTENT State):一个任务还没有在Kernel注册,是一个虚拟的状态。
7.1.2睡眠状态(DORMANT State):一个任务虽然在Kernel注册,但是还没被初始化或者已经被终止。
7.1.3就绪状态(READY State):一个执行的任务在队列中等待CPU的资源分配,因为有其它更高优先级的任务正在执行。
7.1.4运行状态(RUNNING State):这个任务当前正在运行,随着这个高优先级的,在运行状态,Kernel也放置一个就绪(READ)的任务。
7.1.5等待状态(WAITING State):当一个任务不能长时间的继续执行,调用服务函数tslp_tsk(),会使自己睡眠,当调用服务函数wup_tsk()的时候,这个任务就会从WAITING(sleep)状态被唤醒,即这个任务转换为就绪(READ)状态。
7.1.6挂起状态(SUSPENDED State):另一个任务利用服务调用函数sus_tsk()可以使一个任务挂起。
7.1.7等待-挂起状态(WAITING-SUSPENDED State):这个状态是WAITING状态和SUSPENDED状态的合并状态。
附:任务状态的转换图:

7.2任务创建(Task Creation)
任务创建的意思是任务从不存在的状态编程睡眠状态,(Non-existent->Dormant)用哪一种方式创建任务,这个方法就会改变堆栈的使用类型。
参见:任务创建图表(表一)

7.3任务开始(Task Initiation)
一个任务的开始时将任务的睡眠状态编程就绪状态,(Dormant->Ready)
7.3.1一个任务的开始可以用以下两种方法:
@1调用服务函数:act_tsk(),sta_tsk()
@2当一个任务被创建的时候,用特定的TA_ACT作为任务的属性。
7.3.2在任务开始的时候,kernel执行以下的过程:
@1初始化这个任务的base priority和current priority。
@2清除任务wake-up要求的数量。
@3清除任务suspension要求的嵌套的数量。
@4清除挂起(pended)的任务异常来源。
@5设置任务异常处理为不可以的状态。
@6设置任务event flag为0.
说明:以下的参数被传递给任务
@1当TA_ACT作为创建任务的属性的时候和这个任务有act_tsk()开始的时候,这个人在任务创建制定的扩展信息会被传递个任务。
@2当这个任务是由sta_tsk()开始的时候,这个通过sta_tsk()指定的任务开始Code(stacd)会被传递给任务。

7.4任务调度(Task Scheduling)
@1时序调度(Scheduling):任务的时序安排的意思是kernel确定执行的任务执行次序,也就是说,这个次序是有cpu分配给任务,就是READY.kernel选择一个Ready的任务,并且将它置为RUNNING状态,如果没有就绪(READY)的任务,kernel进入空闲状态,取消中断masking并且进入一个无线循环中,等待由中断唤醒的任务,当有许多的任务处于就绪(READY)状态,那么执行的次序就是由cpu分配的wait queue或者ready queue决定的。
为了每一个任务的优先级,(优先级相同的情况下)这有一个ready queeu,每一个queeue操作时按FCFS(First-come,first-served),数值越低,优先级就越高。
@2反转调度(Round-Robin Scheduling)
kernel也支持Round-Robin Scheduling,在cpu分配的相同级别优先级的任务地方,在一个特殊期间,可以通过反转ready queue。用rot_red()函数操作。通过rot_req()函数,在特殊的循环里,执行的次序在一个特殊的期间(具有优先级相同的任务)是可以选择的。
参见:反转任务优先级
@3限制调度(limitation to scheduling)
当系统进入由dis_dsp函数实现的dispatch-disable状态,这个时候任务是不可调度的。
当系统进入由ena_dsp()函数实现的dispatch-enable状态,这个时候任务是可以调度的。
当系统进入由loc_cpu()函数实现的cpu-locked这个时候的任务的调度和所有的中断(除了kernel管理的中断)都是不可以调度的。
当系统进入由unl_cpu()函数实现的cpu-unlocked这个时候的任务调度和中断都是可以的。

附:反转任务优先级


附:任务创建图表(表一)
The method of creating task Kinds of stack which the task created uses static stack Dynamic stack cre_tsk,acre_tsk Service calls √ vscr_tsk Service calls √ By Configruator √ √

7.5任务的终止和删除(Task Ternination and Deletion)
任务终止的意思是一个任务完成之后,进入睡眠状态或者不存在的状态

ext_tsk():从调用的任务中正常退出,是其从运行状态变为睡眠状态。
exd_tsk():使调用的任务正常退出,并将其删除,这个函数将任务从运行状态编程不存在的状态。
ter_tsk():强制终止tskid指定的任务,使其从READY_WAITING,WAITING_SUSPENDED,SUSPENDED状态
变为DORMANT状态。

当一个任务被终止和又被重新开始或者当开始要求queues的数值(act_tsk()服务调用时指定的)除了0,任务就会从最初始的状态开始。

当一个任务不能长久的被用或者当重新分配这个任务ID给其它的任务时,这个exd_tsk()服务调用会被使用,并且将任务不存在的状态,这个ID能够马上被分配给其它的任务,一个任务必须在它执行完了之前释放它的资源,注意,当一个任务被终止和删除,那个Mutex会被unlocked。

当一个任务被终止的时候,kernel执行以下过程:
@1解开被当前任务锁上的互斥。
@2清除上限处理时间(the upper limit processor time)

当一个任务被删除的时候,kernel执行以下过程:
@1释放任务堆栈区域。

7.6任务堆栈(Task Stack)
有三种方式占用堆栈
@1静态堆栈(Static Stack)当系统被配置的时候,静态的堆栈就会通过配置被定义为每一个任务用一个单一的堆栈为多个任务利用,即允许更多的任务去一个共享堆栈是可以使用静态堆栈。
@2动态堆栈(Dynamic Stack)当一个任务被创建,是kernel分配堆栈区域给这个任务,这个堆栈是从动态堆栈区域分配的,一个共享堆栈(使用动态堆栈)不能被多个任务利用。
@3应用程序占用堆栈(Stack Occupied by application only in HI7000H)在任务创建的时候,应用程序占用的堆栈是特殊的地址,共享堆栈功能(用动态堆栈)不可以为多个任务利用。

说明:配置文件指定了一个最大的任务ID(CFG_STSTKID),随着描述最大号的任务使用静态堆栈,这个最大任务ID(CFG_MAXT_SKID)在系统里。
任务ID在1和CFG_STSTKID之间使用静态堆栈,然而,任务ID在CFG_STSTKID+1和CFG_MAXTSKID之间使用动态堆栈或者由应用程序占用,如果CFG_STSTKID被指定为0,那么久无静态的堆栈被使用,如果CFG_STSTKID和CFG_MAXTSKID被指定同样的值,那么所有的任务都会使用顶台堆栈。

7.7共享堆栈功能(Shard Stack Function)
多任务可以共享一个静态堆栈,这样减少了总堆栈空间。
共享堆栈和静态堆栈的分配时有配置文件定义的。然而,在共享一个堆栈的任务组里的任务,是仅仅有一个在每一次被执行的时候。当多个任务开始和共享一个堆栈的时候,首先开始的任务首先使用这个堆栈,剩下的任务进入共享堆栈wait状态,在共享堆栈等待状态的任务一先进先出(FIFO)队列来管理,不管他们的优先级,任务被送到共享堆栈(shared-stack)wait queue。为了他们的开始。
当任务的状态为DORMANT的时候,共享堆栈就会从这个任务中释放,当有多个任务正在等待这个共享堆栈,在等待队列头的任务将会使用这个堆栈和进入READY状态。

附:对共享堆栈功能和转换图(图一)

7.8任务执行模式(Task Execution Mode)

在一些情况中,一个任务可以强制终止一个在还没释放它所有使用的资源之前的任务.(ter_tsk)另外,在一些情况下,一个任务可以被强制地终止(sus_tsk),用vchg_tmd函数可以mask(屏蔽)ter_tsk或者sus_tsk.

7.9排它控制(Exclusive Control)

在一些情况中,在一个任务执行期间,这个任务也许需要排除其它程序。例如,当任务A和中断处理程序B都需要对一个全局变量进行查询和修改,这个时候,查询和修改必须是排它的.即独占。可以排它的控制程序可以是一个中断handler或者是指定的任务。

参见:排他控制表(表一)


7.10任务事件标志位(Task Event Flags )

任务事件标志位是任务的一种模式,一个任务可以等待一个指令.设置的bit为当前任务,也就是说,它可以等待一个指令事件的发生。

参见:Task event flag用例(图一)

8.任务异常处理(Task Exception processing )

当一个任务在执行期间,发生一个异常,那么就会执行异常处理,任务异常处理的执行与任务的处理时异步的,是异步处理,与通常所说的"signal"功能相似.可以在配置的时候定义。

参见:任务异常处理用例(图二)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
排他控制表(表一)
Exclusive ControlInhibited InterruptsTask SchedulingEnter the CPU-Locked state by issuing (loc_cpu)Equal to ro lower than the 

kernel interrupt mask level

NoneMask interrupts by issuing (chg_ims)service call 

when the chg_ims service call is issued from the

task context state,the execution becomes the

non-task context state

Equal to or lower than the

kernel interupt mask level

NoneEnter disable-dispatch state by issuing dis_dsp service callNoneNoneExclusive Control by semaphoreNoneThe kernel schedules tasks;however in tasks

ussing the same seamphore,the number of tasks entering the READYstate.simultaneously 

is limited to the semphore in initial count value

Exclusive Control by mutexNoneThe kernel schedules tasks;however tasks ussing

the same mutex cannot enter the READY state simultaneously.In addition,In tasks using the same mutex,the task priority inversion will not occur

Task event flag用例(图一)


描述:粗线表示执行过程,随着时间关系,Task event flag 的操作

1.任务a调用rclr_tfl(),清除所有的在它任务事件标志位

2.任务a调用vwai_tfl(),等待一个事件

3.任务b调用vset_tfl()(set pattern = 1)给任务a,因为这个设置模式被包含在任务a等待的模式,因此任务a的WAITTING状态取消,并且任务a事件标志位被清零

4.中断handle c调用irset_tlf(),(set pattern = 7)去设置任务a的事件标志位,在这种情况下,然而,随着一个vset_tfl()指定的模式,任务a不等待事件,因此这个任务事件标志位被逻辑或运算(ORed)终止

任务异常处理用例(图二)

描述:字母为操作顺序

a.任务a允许一个任务异常

b.一个异常(异常因子factor = 00000101 )被要求从任务a中,经由这个ras_tex()服务调用,在任务a执行期间

c.当任务a被预定执行的时候,任务的异常处理程序就会在任务a的主要程序被执行之前便开始了,在任务异常处理期间,任务进入任务异常处理不可以的状态,并且任务异常源被清除

d.从任务异常处理程序返回后,任务a的主要程序会被恢复


9.同步和通讯(Synchronization and Communication )

为了能够使任务之间同步和通讯,有以下几个方式:

a.Semaphores(信号量)排他或者独占控制资源

b.Event flags(事件标志位)等待several事件和同步任务操作

c.Data queues(数据队列)传递数据(Passes 1-word data)

d.MailBox(邮箱)传递数据(Passes data address)

e.Mutex(互斥)排他或独占控制一个Single一员(单一)

9.1信号量(Semaphore)

是任务执行被要求的资源元素,这些元素包含任务与硬件之间的内容共享。例如I/O,一个信号量是一个对像,通过表示实物和资源个数提供排他控制和同步功能,在这种情况下,任务必须被创建,为了分开一个任务空间,这个任务被排他访问,通过调用wai_sem()和sig_sem()。通常可以被利用的资源个数在初始化的时候被定义。

参见:Example of using Semaphore用例(图一)

描述:粗线是表示执行过程,虚线表示任务可以独占排他方位资源的区域

a.任务a通过cre_sem()创建一个信号量,开始时信号量个数是2(semaphore = 2)

b.任务a通过wai_sem得到一个信号量,消耗了信号量:个数为1(semaphore = 1)任务a继续执行

c.任务b调用wai_sem()

d.任务c调用wai_sem(),但是不能得到一个信号量,因为信号量的个数已经是0了,并且任务进入WAITING状态

e.任务a调用sig_sem()释放一个信号量,这个释放的信号量被任务c占有,那么任务c从WAITING状态释放进入READY状态

f.任务b地啊用sig_sem()释放一个信号量,因为没有任务在等待信号量,所以信号量的计数被指定为1

9.2事件标志位(Event flag)

一个event flag是一组按位组合的数去相应某个事件.一个事件相应一个位,任务可以等待一个event flag中设定的一个指定的位,也就是说,任务可以等直到这个指定的事件发生

参见:Example of using an Event flag用例(图二)

描述:粗线是表示执行过程,以下是描述event flag的操作与时间的关系

a.任务a通过cre_flg()创建一个event falg.TA_CLR属性(当WAITING状态释放,清除event flag为0),被指定并且开始时各个为指定的值都是0

b.任务a通过wai_flg()(waiting pattern = 3,AND wait)去等待一个事件

c.任务b通过set_flg()(set pattern = 7)因为任务a正在等待被设置,所有的位.任务a从WAITING状态释放,另外,因为被指定TA_CLR这个属性,这个event flag被清0

d.中断handler C通过iset_flg()(set pattern = 1)设置event flag,在这种情况下,这没有任务等待事件,并且event flag是(ORed)与操作和这个通过iset_flg()指定的pattern.




uITRON4.0 规范 uITRON4.0 是目前应用最广泛的嵌入式系统,可支持8位,16位,32位系统。 立即下载

相关推荐

uitron specification

英文资料,详细讲述itron的原理和应用

uITRON之任务状态和任务调度

uITRON之任务状态和任务调度

liuhongen的博客 2321

uITRON4.0

uITRON4.0的规范,英文

ITRON系统使用方法

本文档有些图片不能显示出来,可以到我资源里面下载完整文档。 ITRON系统使用方法    目录 1    引言.... 4 2    ITRON系统介绍.... 5 2.1     概要... 5 2.2     构成... 5 2.2.1   ITRON系统构成... 5 2.2.2   ITRON体系结构... 5 2.3     应用领域.

Leo 9465

uitron4仕様.pdf

一种源于日本,非常好用的实时操作系统。本文是这种操作系统的规范文档

使用LogisticRegression和LightGBM模型对信贷违约进行预测----基于kaggle比赛数据

3.分离数值型变量与类别型变量,发现有些数值型变量因为输入不规范,比如数值中含有字符(28_,_10000_等)被划分为类别型变量 ,比如 'Age','Annual_Income','Num_of_Loan', 'Num_of_Delayed_Payment', 'Changed_Credit_Limit','Credit_Mix','Monthly_Balance', 'Outstanding_Debt' ,'Amount_invested_monthly'等。三、分箱,woe编码,计算IV值。

I_am_a_big_tiger的博客 1682

eigen、g2o库在uitron实时操作系统上的移植

    最近由于项目开发需要,单核linux运行slam性能有限,考虑将slam的g2o优化运算迁移到另外一颗单独运行uitron的arm-a53上,从而实现线程分离,orb-slam 的localmapping线程中的 local BA将在uitron上独立运行,并采用核间通信IPC+共享内存实现数据访问。考虑到uitron是RTOS,而g2o是基于linux,其中类模板封装了相当多的与操作系统...

sanduan168的博客 1060

基于RK3588与Gstreamer的端侧实时视频流AI推理系统构建

本文详细介绍了基于RK3588芯片与Gstreamer框架构建端侧实时视频流AI推理系统的完整方案。通过硬件选型、环境配置、OpenCV编译优化、视频流处理实战及模型部署等关键环节的深入解析,展示了如何利用RK3588的6TOPS NPU算力与Gstreamer的低延迟特性,实现工业质检、智能交通等场景下的高效边缘计算。特别针对RTSP推拉流优化、RKNN模型转换等核心技术难点提供了实用解决方案。

weixin_30516243的博客 381

嵌入式系统概述

嵌入式系统概述 嵌入式系统的定义 嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可剪裁、适应于对系统功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。 这个定义主要包含两个信息,一是嵌入式系统是专用计算机系统,因此必须要有处理器,具备计算机系统的基本特征。二是嵌入式系统的功能是有严格要求并按照指定的应用而设计的。 嵌入式系统应

Meiyouyudi 没有余地 MYYD 2014

LVGL高效加载外部Flash图片资源的实现与优化

本文深入探讨了在嵌入式UI开发中,如何为LVGL高效加载外部Flash中的图片资源。针对内部Flash容量不足的痛点,详细解析了LVGL的图片处理原理,并对比了内存映射与流式解码两种主流实现方案。文章重点提供了性能优化技巧与实战避坑指南,旨在帮助开发者实现流畅的图片加载体验,解决SPI Flash读取慢、内存占用高等核心挑战。

t1u2v的博客 462

推荐文章:探索自制操作系统之旅 —— Ultron OS

推荐文章:探索自制操作系统之旅 —— Ultron OS 随着技术的不断进步,自制操作系统的魅力不仅仅局限于技术发烧友之间,它已经成为了广大开发者探索底层原理、实践系统编程的热门领域。今天,我们将一同揭开一个由C++精心打造的x86操作系统——Ultron OS的神秘面纱。 项目介绍 Ultron OS是一个专为对象导向设计而生的轻量级操作系统。它巧妙地利用C++的强大特性,实现了诸如引导初始化...

gitblog_00119的博客 438

Manimgl 进阶笔记

目录 一、调整视频输出的纵横比 二、调整预览窗口的尺寸 三、在开发工具中直接调试 一、调整视频输出的纵横比 调整输出视频的纵横比,在日常开发中属于比较基本的需求。要使用 Manimgl 得到期望的分辨率的视频输出需要修改以下几个地方: 第一步:在 custom_config.yml 配置文件中通过 camera_qualities设置视频的输出分辨率。manimlib 框架已经在 default_config.yml 文件中设置了四种视频输出分辨率,default_qualities 参数.

gunnery的专栏 2856

【ISIS基础】

目录 一、ISIS ISIS(中间系统到中间系统)是一种动态路由协议。 二、isis地址结构 1.NSP IDP相对于tcp/ip里面的IP地址的网络号 DSP相当于routerID 和协议号 2.NET 3.isis的区域划分(不同于ospf) isis通过邻居关系是否为level-2来判断是否为骨干区域(默认路由器是level1-2) 4. isis路由器分类 level 1、level 2、level 1-2 5.isis支持的网络类型 MA和P2P 二、is...

AZK707的博客 8367

Android 15.0 Launcher3中去掉Hotseat功能实现

在15.0系统产品定制化开发中,在Launcher3的定制化需求也是特别多的,由产品是小屏幕的产品,所以产品需求Launcher3 页面布局的原因,要求Launcher3 需要去掉Hotseat 不显示Hotseat下面几个图标,而做满屏app的显示,从而达到美观的效果,下面就来分析去掉Hotseat从而实现这个功能

安卓兼职framework和app工程师的博客 554

72、海洋地理信息系统:电子海图的全面解析

本文全面解析了海洋地理信息系统中的电子海图技术,从AIS数据的应用、电子海图数据的存储与显示,到电子导航的发展趋势和S-100通用水文数据模型的推广,系统地阐述了电子海图在现代航海中的核心作用及其未来发展方向。

hhh00的博客 252

ITRON同步和通信管理

ITRON同步和通信管理 在多任务的实时系统中,一项工作的完成往往要通过多个任务或多个任务与多个中断处理过程(ISRs)共同完成。它们之间必须协调动作互相配合,甚至需要交换信息进行通信。这些通信和同步的需要是: 1.任务能和其他任务及ISRs 交换数据 2.任务能以以下方式与其他任务进行同步 单向同步一个任务与另一个任务或一个ISR 同步 双向同步两个任务相互同步 与同步 一个任

千月星跡 4509

【即插即用模块】注意力篇 | TGRS 2025 | MFA聚特征+HPDown保细节+HFF融层级,三大模块各司其职,性能翻倍!

本文介绍了MTMLNet网络中的三大核心模块:MFA(多阶段特征聚合)、HPDown(混合池化下采样)和HFF(分层特征融合)。MFA通过双尺度深度卷积和注意力机制增强特征提取能力;HPDown结合平均池化和最大池化,有效保留下采样过程中的特征信息;HFF采用三注意力机制实现自适应特征融合。这三个模块协同工作,在红外小目标检测与分割任务中取得了SOTA效果。实验表明,各模块在特征提取、信息保留和融合方面均优于传统方法,可灵活应用于各类视觉任务中。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 284

ITRON的任务管理

Task管理机能 Task 任务就是一个具有独立功能的无限循环的程序段的一次运行活动。任务具有动态性并行性异步独立性的特点。 动态性任务的状态是不断变化的,一般分为:休眠态(dormant), 就绪态(ready),运行态(running), 挂起态suspended 睡眠态sleep 并行性是指系统中同时存在多个任务,它们宏观上是同时运行的。异步独立性任务是系统中独立运行的基本单元也是内

千月星跡 4909

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ITRON入门之任务(TASK)的理解

任务概述程序的运行有点像工人在工作不配备实时操作系统的程序的挑战LED闪烁的任务每秒钟闪烁LED的任务发出声音的任务蜂鸣声输出的任务任务、线程和进程的关系任务线程进程进程和线程之间的区别 概述 在具有实时操作系统的系统中,程序以任务的概念运行。 了解实时操作系统和ITRON规格时,了解“任务”是一切的开始。 ITRON以此任务为中心运行系统。 程序的运行有点像工人在工作 #include <stdio.h> int main(void) { long calc = 0; calc = 1

编程老王 948

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

iTron3学习笔记(一) System Calls of Memory Pool Management Functions

iTron3学习笔记(一)  System Calls of Memory Pool Management Functions1、创建固定内存池(Create Fixed Memory Pool)说明:在RAM中的固定位置,创建一块内存池。函数声明:ER vcre_mpf(ID  mpfid,VP  start_addr,VP  end_addr,INT blfsz)参数说明:    ID  mp

Larry的专栏 942

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ITRON系统

ITRON系统使用方法 目录 1 引言 4 2 ITRON系统介绍 5 2.1 概要 5 2.2 构成 5 2.2.1 ITRON系统构成 5 2.2.2 ITRON体系结构 5 2.3 应用领域 6 2.4 如何使用ITRON系统 6 3 ITRON的基本机能 8 3.1 Task管理机能 8 3.1.1 Task 8 3.1.2 任务调

Learn and live 5945

ITRON的内存管理,中断处理,时钟管理

内存管理 任务在运行过程中对内存的需求是不断变化的不同的任务有不同的需要,OS 将内存当作一种资源来看并且在竞争的任务之间分配,这种资源就如同在竞争的任务间分配CPU 控制权一样。  概述 在ITRON系统中所指的内存管理是通过对软件的内存区域进行动态的管理,也就是说在需要申请使用的时候就要确保,如果不需要的时候就进行归还的功能。  图: Memory Pool示意图 在ITRON系

千月星跡 3447
上一篇: ITRON系统使用方法
下一篇: BMP文件格式
ecjtuync
博客等级 码龄20年 157粉丝 164原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值