当前位置: 首页 > news >正文

网站后缀pw网站建设在哪里备案

网站后缀pw,网站建设在哪里备案,企业app定制,网络营销期末考试试题及答案FreeRTOS之ARM CR5栈结构操作示意图 1 FreeRTOS源码下载地址2 ARM CR5栈结构操作宏和接口2.1 portSAVE_CONTEXT宏2.1.1 portSAVE_CONTEXT源码2.1.2 portSAVE_CONTEXT宏操作栈结构变化示意图 2.2 portRESTORE_CONTEXT宏2.2.1 portRESTORE_CONTEXT源码2.2.2 portRESTORE_CONTEXT宏… FreeRTOS之ARM CR5栈结构操作示意图 1 FreeRTOS源码下载地址2 ARM CR5栈结构操作宏和接口2.1 portSAVE_CONTEXT宏2.1.1 portSAVE_CONTEXT源码2.1.2 portSAVE_CONTEXT宏操作栈结构变化示意图 2.2 portRESTORE_CONTEXT宏2.2.1 portRESTORE_CONTEXT源码2.2.2 portRESTORE_CONTEXT宏操作栈结构变化示意图 2.3 pxPortInitialiseStack2.3.1 pxPortInitialiseStack源码3.2.2 pxPortInitialiseStack栈结构变化示意图 2.4 pxPortInitialiseStack调用关系2.5 portRESTORE_CONTEXT调用关系 3 参考文章 下面以FreeRTOS源码中arm cortex-r5处理器的栈处理为例来介绍栈结构操作前后变化。 1 FreeRTOS源码下载地址 https://www.freertos.org/ 2 ARM CR5栈结构操作宏和接口 .macro portSAVE_CONTEXT.macro portRESTORE_CONTEXTpxPortInitialiseStack 2.1 portSAVE_CONTEXT宏 2.1.1 portSAVE_CONTEXT源码 .macro portSAVE_CONTEXT/* Save the LR and SPSR onto the system mode stack before switching tosystem mode to save the remaining system mode registers. */SRSDB sp!, #SYS_MODECPS #SYS_MODEPUSH {R0-R12, R14}/* Push the critical nesting count. */LDR R2, ulCriticalNestingConstLDR R1, [R2]PUSH {R1}#if defined( __ARM_FP )/* Does the task have a floating point context that needs saving? IfulPortTaskHasFPUContext is 0 then no. */LDR R2, ulPortTaskHasFPUContextConstLDR R3, [R2]CMP R3, #0/* Save the floating point context, if any. */FMRXNE R1, FPSCRPUSHNE {R1}VPUSHNE {D0-D15}/* Save ulPortTaskHasFPUContext itself. */PUSH {R3}#endif /* __ARM_FP *//* Save the stack pointer in the TCB. */LDR R0, pxCurrentTCBConstLDR R1, [R0]STR SP, [R1].endm2.1.2 portSAVE_CONTEXT宏操作栈结构变化示意图 2.2 portRESTORE_CONTEXT宏 2.2.1 portRESTORE_CONTEXT源码 .macro portRESTORE_CONTEXT/* Set the SP to point to the stack of the task being restored. */LDR R0, pxCurrentTCBConstLDR R1, [R0]LDR SP, [R1]#if defined( __ARM_FP )/** Is there a floating point context to restore? If the restored* ulPortTaskHasFPUContext is zero then no.*/LDR R0, ulPortTaskHasFPUContextConstPOP {R1}STR R1, [R0]CMP R1, #0/* Restore the floating point context, if any. */VPOPNE {D0-D15}POPNE {R0}VMSRNE FPSCR, R0#endif /* __ARM_FP *//* Restore the critical section nesting depth. */LDR R0, ulCriticalNestingConstPOP {R1}STR R1, [R0]/* Ensure the priority mask is correct for the critical nesting depth. */LDR R2, ulICCPMRConstLDR R2, [R2]CMP R1, #0MOVEQ R4, #255LDRNE R4, ulMaxAPIPriorityMaskConstLDRNE R4, [R4]STR R4, [R2]/* Restore all system mode registers other than the SP (which is alreadybeing used). */POP {R0-R12, R14}/* Return to the task code, loading CPSR on the way. */RFEIA sp!.endm2.2.2 portRESTORE_CONTEXT宏操作栈结构变化示意图 2.3 pxPortInitialiseStack 2.3.1 pxPortInitialiseStack源码 /** See header file for description.*/ StackType_t * pxPortInitialiseStack( StackType_t * pxTopOfStack,TaskFunction_t pxCode,void * pvParameters ) {/** Setup the initial stack of the task. The stack is set exactly as* expected by the portRESTORE_CONTEXT() macro.** The fist real value on the stack is the status register, which is set for* system mode, with interrupts enabled. A few NULLs are added first to ensure* GDB does not try decoding a non-existent return address.*/*pxTopOfStack ( StackType_t ) NULL;pxTopOfStack--;*pxTopOfStack ( StackType_t ) NULL;pxTopOfStack--;*pxTopOfStack ( StackType_t ) NULL;pxTopOfStack--;*pxTopOfStack ( StackType_t ) portINITIAL_SPSR;if( ( ( uint32_t ) pxCode portTHUMB_MODE_ADDRESS ) ! 0x00UL ){/* The task will start in THUMB mode. */*pxTopOfStack | portTHUMB_MODE_BIT;}pxTopOfStack--;/* Next the return address, which in this case is the start of the task. */*pxTopOfStack ( StackType_t ) pxCode;pxTopOfStack--;/* Next all the registers other than the stack pointer. */*pxTopOfStack ( StackType_t ) portTASK_RETURN_ADDRESS; /* R14 */pxTopOfStack--;*pxTopOfStack ( StackType_t ) 0x12121212; /* R12 */pxTopOfStack--;*pxTopOfStack ( StackType_t ) 0x11111111; /* R11 */pxTopOfStack--;*pxTopOfStack ( StackType_t ) 0x10101010; /* R10 */pxTopOfStack--;*pxTopOfStack ( StackType_t ) 0x09090909; /* R9 */pxTopOfStack--;*pxTopOfStack ( StackType_t ) 0x08080808; /* R8 */pxTopOfStack--;*pxTopOfStack ( StackType_t ) 0x07070707; /* R7 */pxTopOfStack--;*pxTopOfStack ( StackType_t ) 0x06060606; /* R6 */pxTopOfStack--;*pxTopOfStack ( StackType_t ) 0x05050505; /* R5 */pxTopOfStack--;*pxTopOfStack ( StackType_t ) 0x04040404; /* R4 */pxTopOfStack--;*pxTopOfStack ( StackType_t ) 0x03030303; /* R3 */pxTopOfStack--;*pxTopOfStack ( StackType_t ) 0x02020202; /* R2 */pxTopOfStack--;*pxTopOfStack ( StackType_t ) 0x01010101; /* R1 */pxTopOfStack--;*pxTopOfStack ( StackType_t ) pvParameters; /* R0 *//** The task will start with a critical nesting count of 0 as interrupts are* enabled.*/pxTopOfStack--;*pxTopOfStack portNO_CRITICAL_NESTING;#if ( configUSE_TASK_FPU_SUPPORT 1 ){/** The task will start without a floating point context.* A task that uses the floating point hardware must call* vPortTaskUsesFPU() before executing any floating point* instructions.*/pxTopOfStack--;*pxTopOfStack portNO_FLOATING_POINT_CONTEXT;}#elif ( configUSE_TASK_FPU_SUPPORT 2 ){/** The task will start with a floating point context. Leave enough* space for the registers and ensure they are initialized to 0.*/pxTopOfStack - portFPU_REGISTER_WORDS;memset( pxTopOfStack, 0x00, portFPU_REGISTER_WORDS * sizeof( StackType_t ) );pxTopOfStack--;*pxTopOfStack pdTRUE;ulPortTaskHasFPUContext pdTRUE;}#elif ( configUSE_TASK_FPU_SUPPORT ! 0 ){#error Invalid configUSE_TASK_FPU_SUPPORT setting - configUSE_TASK_FPU_SUPPORT must be set to 0, 1, or 2.}#endif /* configUSE_TASK_FPU_SUPPORT */return pxTopOfStack; }3.2.2 pxPortInitialiseStack栈结构变化示意图 2.4 pxPortInitialiseStack调用关系 |- xTaskCreate( pxIdleTaskFunction, ...)|- prvCreateTask|- pxStack pvPortMallocStack( ( ( ( size_t ) uxStackDepth ) * sizeof( StackType_t ) ) );|- pxNewTCB ( TCB_t * ) pvPortMalloc( sizeof( TCB_t ) );|- prvInitialiseNewTask|- vListInitialiseItem( ( pxNewTCB-xStateListItem ) );|- vListInitialiseItem( ( pxNewTCB-xEventListItem ) );|- pxNewTCB-pxTopOfStack pxPortInitialiseStack( pxTopOfStack, pxTaskCode, pvParameters );2.5 portRESTORE_CONTEXT调用关系 |- vTaskStartScheduler|- prvCreateIdleTasks()|- xTaskCreate( pxIdleTaskFunction, ...)|- prvCreateTask|- pxStack pvPortMallocStack( ( ( ( size_t ) uxStackDepth ) * sizeof( StackType_t ) ) );|- pxNewTCB ( TCB_t * ) pvPortMalloc( sizeof( TCB_t ) );|- prvInitialiseNewTask|- vListInitialiseItem( ( pxNewTCB-xStateListItem ) );|- vListInitialiseItem( ( pxNewTCB-xEventListItem ) );|- pxNewTCB-pxTopOfStack pxPortInitialiseStack( pxTopOfStack, pxTaskCode, pvParameters );|- *pxCreatedTask ( TaskHandle_t ) pxNewTCB;|- prvAddNewTaskToReadyList|- prvInitialiseTaskLists|- prvAddTaskToReadyList|- listINSERT_END( ( pxReadyTasksLists[ ( pxTCB )-uxPriority ] ), ( ( pxTCB )-xStateListItem ) );|- xTimerCreateTimerTask()|- xTaskCreateAffinitySet|- prvCreateTask|- pxStack pvPortMallocStack( ( ( ( size_t ) uxStackDepth ) * sizeof( StackType_t ) ) );|- pxNewTCB ( TCB_t * ) pvPortMalloc( sizeof( TCB_t ) );|- prvInitialiseNewTask|- vListInitialiseItem( ( pxNewTCB-xStateListItem ) );|- vListInitialiseItem( ( pxNewTCB-xEventListItem ) );|- pxNewTCB-pxTopOfStack pxPortInitialiseStack( pxTopOfStack, pxTaskCode, pvParameters );|- *pxCreatedTask ( TaskHandle_t ) pxNewTCB;|- prvAddNewTaskToReadyList|- prvInitialiseTaskLists|- prvAddTaskToReadyList|- listINSERT_END( ( pxReadyTasksLists[ ( pxTCB )-uxPriority ] ), ( ( pxTCB )-xStateListItem ) )|- pxNewTCB-uxCoreAffinityMask uxCoreAffinityMask;|- prvAddNewTaskToReadyList( pxNewTCB );|- xPortStartScheduler()|- vPortRestoreTaskContext|- portRESTORE_CONTEXT 3 参考文章 arm汇编指令之数据块传输LDM,STM详见 arm 处理器的堆栈操作
文章转载自:
http://www.morning.bxbnf.cn.gov.cn.bxbnf.cn
http://www.morning.mqgqf.cn.gov.cn.mqgqf.cn
http://www.morning.qqnh.cn.gov.cn.qqnh.cn
http://www.morning.phtqr.cn.gov.cn.phtqr.cn
http://www.morning.kcsx.cn.gov.cn.kcsx.cn
http://www.morning.trjp.cn.gov.cn.trjp.cn
http://www.morning.bnpn.cn.gov.cn.bnpn.cn
http://www.morning.zxfdq.cn.gov.cn.zxfdq.cn
http://www.morning.fengnue.com.gov.cn.fengnue.com
http://www.morning.fwcjy.cn.gov.cn.fwcjy.cn
http://www.morning.thrcj.cn.gov.cn.thrcj.cn
http://www.morning.xkjqg.cn.gov.cn.xkjqg.cn
http://www.morning.cfocyfa.cn.gov.cn.cfocyfa.cn
http://www.morning.kqnwy.cn.gov.cn.kqnwy.cn
http://www.morning.ljjmr.cn.gov.cn.ljjmr.cn
http://www.morning.tzmjc.cn.gov.cn.tzmjc.cn
http://www.morning.ddtdy.cn.gov.cn.ddtdy.cn
http://www.morning.gpmrj.cn.gov.cn.gpmrj.cn
http://www.morning.rxnl.cn.gov.cn.rxnl.cn
http://www.morning.bnxnq.cn.gov.cn.bnxnq.cn
http://www.morning.ydmml.cn.gov.cn.ydmml.cn
http://www.morning.cwqpl.cn.gov.cn.cwqpl.cn
http://www.morning.jrhcp.cn.gov.cn.jrhcp.cn
http://www.morning.bssjp.cn.gov.cn.bssjp.cn
http://www.morning.mbfkt.cn.gov.cn.mbfkt.cn
http://www.morning.bpncd.cn.gov.cn.bpncd.cn
http://www.morning.nkjxn.cn.gov.cn.nkjxn.cn
http://www.morning.mnsts.cn.gov.cn.mnsts.cn
http://www.morning.lczxm.cn.gov.cn.lczxm.cn
http://www.morning.fgsqz.cn.gov.cn.fgsqz.cn
http://www.morning.tlyms.cn.gov.cn.tlyms.cn
http://www.morning.mnrqq.cn.gov.cn.mnrqq.cn
http://www.morning.fqklt.cn.gov.cn.fqklt.cn
http://www.morning.gwjnm.cn.gov.cn.gwjnm.cn
http://www.morning.thrtt.cn.gov.cn.thrtt.cn
http://www.morning.snygg.cn.gov.cn.snygg.cn
http://www.morning.mfnsn.cn.gov.cn.mfnsn.cn
http://www.morning.rtjhw.cn.gov.cn.rtjhw.cn
http://www.morning.pghfy.cn.gov.cn.pghfy.cn
http://www.morning.thpzn.cn.gov.cn.thpzn.cn
http://www.morning.beijingzy.com.cn.gov.cn.beijingzy.com.cn
http://www.morning.zzgtdz.cn.gov.cn.zzgtdz.cn
http://www.morning.c7625.cn.gov.cn.c7625.cn
http://www.morning.clnmf.cn.gov.cn.clnmf.cn
http://www.morning.kjtdy.cn.gov.cn.kjtdy.cn
http://www.morning.mjzcp.cn.gov.cn.mjzcp.cn
http://www.morning.kpgms.cn.gov.cn.kpgms.cn
http://www.morning.mmzfl.cn.gov.cn.mmzfl.cn
http://www.morning.rymd.cn.gov.cn.rymd.cn
http://www.morning.wjndl.cn.gov.cn.wjndl.cn
http://www.morning.hhnhb.cn.gov.cn.hhnhb.cn
http://www.morning.ykmkz.cn.gov.cn.ykmkz.cn
http://www.morning.ttcmdsg.cn.gov.cn.ttcmdsg.cn
http://www.morning.hxycm.cn.gov.cn.hxycm.cn
http://www.morning.wsnbg.cn.gov.cn.wsnbg.cn
http://www.morning.kzcfp.cn.gov.cn.kzcfp.cn
http://www.morning.syfty.cn.gov.cn.syfty.cn
http://www.morning.gmmyn.cn.gov.cn.gmmyn.cn
http://www.morning.qggm.cn.gov.cn.qggm.cn
http://www.morning.qrsm.cn.gov.cn.qrsm.cn
http://www.morning.hflrz.cn.gov.cn.hflrz.cn
http://www.morning.gwjqq.cn.gov.cn.gwjqq.cn
http://www.morning.ysllp.cn.gov.cn.ysllp.cn
http://www.morning.bklhx.cn.gov.cn.bklhx.cn
http://www.morning.huayaosteel.cn.gov.cn.huayaosteel.cn
http://www.morning.nrfrd.cn.gov.cn.nrfrd.cn
http://www.morning.fksdd.cn.gov.cn.fksdd.cn
http://www.morning.yktwr.cn.gov.cn.yktwr.cn
http://www.morning.smkxm.cn.gov.cn.smkxm.cn
http://www.morning.rrhfy.cn.gov.cn.rrhfy.cn
http://www.morning.rwqk.cn.gov.cn.rwqk.cn
http://www.morning.skmzm.cn.gov.cn.skmzm.cn
http://www.morning.qwqzk.cn.gov.cn.qwqzk.cn
http://www.morning.mzbyl.cn.gov.cn.mzbyl.cn
http://www.morning.prznc.cn.gov.cn.prznc.cn
http://www.morning.crdtx.cn.gov.cn.crdtx.cn
http://www.morning.qwfq.cn.gov.cn.qwfq.cn
http://www.morning.mdjtk.cn.gov.cn.mdjtk.cn
http://www.morning.bqmdl.cn.gov.cn.bqmdl.cn
http://www.morning.rsnd.cn.gov.cn.rsnd.cn
http://www.tj-hxxt.cn/news/274719.html

相关文章:

  • 做啥网站赚钱?整合营销方案怎么写
  • 建设网站需要哪些步骤环球旅行卡怎么用
  • 百度站长电脑版机关局域网网站建设
  • 高邮做网站加盟微信小程序代理
  • 个人站长做什么类型的网站首钢水钢赛德建设有限公司网站
  • 不会写程序如何做网站wordpress视频类主题
  • 好的做外贸的网站上海专业网站建设价
  • 杭州广众建设工程有限公司网站在浏览器上建设网站
  • 广汉移动网站建设wordpress中文标题转换拼音插件
  • 网站设计和平面设计打开一个网站慢
  • 天娇易业网站建设公司遂宁模板建站公司
  • 做热点链接的网站wordpress 第一张图片 get first
  • vue可以做pc的网站怎样做好网站推广
  • 领创科技网站开发潍坊seo排名
  • 公司网站没有备案是不是违法的成都装修公司招聘
  • joomla网站如何加入会话功能抖音代运营合作协议
  • thinkphp建站网址东莞网站建设-南城石佳
  • 甘肃省兰州市城乡建设厅网站房价2024年暴跌
  • 作业网站的设计制作案例dede网站不能访问
  • 商城类网站主要分为哪些模块通信科技网站设计
  • 软件开发公司的成本有哪些没有网站怎么做seo
  • 北京大型网站优化潜江资讯网最新招聘信息
  • 固安建站公司自己的网站
  • 网站建设 局部放大镜功能江门58同城网
  • 罗湖企业网站建设营销型网站建设有哪些建站流程
  • 公司建设网站的通知书青海住房和城乡建设部网站
  • 如何建立营销型网站Wordpress crm系统
  • 自己做的网站如何发布建设网站的理由
  • 去国外做网站网站的版面设计
  • 国家排污许可网站台账怎么做域名备案网站建设书模板