分散加载文件如何批量使用

分散加载文件如何批量使用,第1张

原来要一个一个自己写,类似:

OS_LOAD 0x00000000  ABSOLUTE

{

BOOT 0x00000000

{  中断向量表

vectors.o (VECT, +First)

init.o (INIT)

}

ROM_EXEC1 +0

{

__main.o(+RO)

__scatter.o (+RO)

__scatter_zi.o(+RO)

__dczerorl.o(+RO)

anon$$obj.o(+RO)

__scatter_copy.o(+RO)

cpu_a.o (+RO)

iap.o (+RO)

init.o (+RO)

lib_mem.o (+RO)

lib_ mem_a.o (+RO)

lib_str.o (+RO)

net.o (+RO)

net_arp.o (+RO)

net_ascii.o (+RO)

net_bsd.o (+RO)

net_bsp.o (+RO)

net_buf.o (+RO)

net_conn.o (+RO)

net_ctr.o (+RO)

net_dbg.o (+RO)

net_err.o (+RO)

net_icmp.o (+RO)

net_if.o (+RO)

net_if_pkt.o (+RO)

net_ip.o (+RO)

net_isr.o (+RO)

net_nic.o (+RO)

net_os.o (+RO)

net_phy.o (+RO)

net_sock.o (+RO)

net_stat.o (+RO)

net_tcp.o (+RO)

net_tmr.o (+RO)

net_udp.o (+RO)

net_util.o (+RO)

net_util_a.o (+RO)

os_core.o (+RO)

os_cpu_a.o (+RO)

os_cpu_c.o (+RO)

os_dbg.o (+RO)

os_dbg_r.o (+RO)

os_flag.o (+RO)

os_mbox.o (+RO)

os_mem.o (+RO)

os_mutex.o (+RO)

os_q.o (+RO)

os_sem.o (+RO)

os_task.o (+RO)

os_time.o (+RO)

os_tmr.o (+RO)

ucos_ii.o (+RO)

upgrade.o (+RO)

vectors.o (+RO)

bsp.o (+RO)

app.o (+RO)

strncmp.o (+RO)

lib_mem_a.o(+RO)

libshutdown2.o(+RO)

rtexit2.o (+RO)

use_no_semi.o  (+RO)

sys_exit.o (+RO)

fpinit.o (+RO)

libinit2.o (+RO)

rtexit.o (+RO)

libinit.o (+RO)

exit.o (+RO)

rtentry7.o (+RO)

rtentry2.o (+RO)

rt_memclr.o (+RO)

rtentry.o (+RO)

aeabi_sdiv.o (+RO)

aeabi_sdiv.o (+RO)

rt_memclr_w.o (+RO)

rt_memcpy_w.o (+RO)

aeabi_memset.o (+RO)

libshutdown.o (+RO)

__0sscanf.o (+RO)

_scanf_int.o(+RO)

strstr.o(+RO)

_chval.o(+RO)

scanf_char.o(+RO)

_sgetc.o(+RO)

isspace.o(+RO)

_scanf.o(+RO)

rt_ctype_table.o(+RO)

rt_locale_intlibspace.o(+RO)

lc_ctype_c.o(+RO)

strcmp.o (+RO)

_scanf_int.o  (+RO)

_scanf.o (+RO)

setlocale.o(+RO)

locale.o(+RO)

null_locale.o(+RO)

bootloader.o(+RO)

bootwebupgrade.o(+RO)

app.o(+RO)

webupgrade.o(+RO)

}

RW_IRAM1 0x40000000 0x00007000

{

* (+RW,+ZI)

}

ARM_LIB_HEAP  0x40007000 EMPTY  0x00000100   {}

ARM_LIB_STACK 0x40008000 EMPTY -0x00000E00   {}

RW_IRAM3 0x80000000

{

webupgrade.o (+RW,+ZI)

upgrade.o (+RW,+ZI)

}

RW_IRAM2 0x7fd00000 0x1fff

{

webupgrade.o (+RW,+ZI)

bootloader.o (+RW,+ZI)

}

}

APP_LOAD 0x00040000  

{

MAIN_EXE +0

{

app.o(mymain) app.o就是我的main主函数所在的C文件模块app.c

mymain就是刚才定义的一个节其实就是代表main主函数

这里可以看到mymain的节(也就是main函数)

被放在地址0x00050000处,这样就完成了函数地址定位的功能

}

APP_EXE +0 

{

*(+RO)

webupgrade.o (+RO)

}

}

开源安全事件元数据(OSSEM)是一个社区主导的项目,主要关注来自不同数据源和操作系统的安全事件日志的文档化和标准化。安全事件以字典格式记录下来,可以作为诸如ThreatHunter-Playbook之类项目的参考,同时将数据源映射到用于验证对抗性技术检测的数据分析。此外,该项目还提供了一个公共信息模型(CIM),可以在数据规范化过程中供数据工程师使用,从而允许安全分析人员跨不同数据源查询和分析数据。最后,该项目还提供了关于特定数据源中确定的结构和关系的文档,以促进数据分析的开发。

任务2输出5之后,由于等待信号量被挂起,之后任务1输出3,然后发信号量,注意发信号亮并不是简单的+1,OSSemPost中有这几行代码if(pevent->OSEventGrp!=0){(void)OS_EventTaskRdy(pevent,(void*)0,OS_STAT_SEM,OS_STAT_PEND_OK)OS_EXIT_CRITICAL()OS_Sched()return(OS_ERR_NONE)}此时因为任务2的优先级较1低,所以没有立即运行,而是任务1继续输出4、0然后挂起自己,任务2就运行了,输出678


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/191102.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-31
下一篇2023-03-31

发表评论

登录后才能评论

评论列表(0条)

    保存