tag 标签: 抢占

相关博文
  • 热度 24
    2020-7-23 10:44
    2484 次阅读|
    0 个评论
    Cortex-M3/M4/M7有BASEPRI特殊功能寄存器可以屏蔽优先级低于BASEPRI设定值的中断,但Cortex-M0/M0+没有BASEPRI寄存器,不过仍然可以实现相识的功能。 mingdu.zheng at gmail dot com http://blog.csdn.net/zoomdy/article/details/79316998 实现方法 虽然Cortex-M0/M0+没有BASEPRI寄存器,但是仍然有NVIC,而且M0/M0+最多只有32个中断源,因此操作一个寄存器就可以影响所有中断源。假设使用了8个中断源,其中1、17中断优先级值为0x00(最高优先级),18、19中断优先级值为0x40,14、25中断优先级值为0x80,8、31中断优先级值为0xC0(最低优先级)。 中断号 优先级值 优先级 1 0x00 最高 17 0x00 最高 18 0x40 高 19 0x40 高 14 0x80 低 25 0x80 低 8 0xc0 最低 31 0xc0 最低 1、定义优先级分组宏 # define BASEPRI_0x40 ((1 << 1) | (1 << 17)) # define BASEPRI_0x80 (BASEPRI_0x40 | (1 << 18) | (1 << 19)) # define BASEPRI_0xc0 (BASEPRI_0x80 | (1 << 14) | (1 << 25)) # define BASEPRI_0x00 (BASEPRI_0xc0 | (1 << 8) | (1 << 31)) 2、定义中断使能控制宏 // 仅使能优先级值小于0x40的中断源(最高优先级中断源) // 相当于 BASEPRI = 0x40 #define SET_BASEPRI_40 ICER = 0xffffffff ISER = BASEPRI_0x40 // 使能优先级值小于0x80的中断源 / 相当于 BASEPRI = 0x80 #define SET_BASEPRI_80 ICER = 0xffffffff ISER = BASEPRI_0x80 // 使能优先级值小于0xc0的中断源 // 相当于 BASEPRI = 0xc0 #define SET_BASEPRI_C0 ICER = 0xffffffff ISER = BASEPRI_0xc0 / / 使能所有中断源 // 相当于 BASEPRI = 0x00 #define SET_BASEPRI_00 ICER = 0xffffffff ISER = BASEPRI_0xff 3、使用 // 这里只能使能最高优先级 SET_BASEPRI_40; ... // 现在可以使能全部中断了 SET_BASEPRI_00; ... // 就是这样用 4、优化 封装成和CMSIS-CORE API一样的实现,这样看起来就像真的在操作BASEPRI了。 static inline void __set_BASEPRI(uint32_t value) { if(value == 0) { SET_BASEPRI_00; } else if(value <= 0x40) { SET_BASEPRI_40; } else if(vlaue <= 0x80) { SET_BASEPRI_80; } else { SET_BASEPRI_c0; } } 缺陷 SVCall、PendSV和SysTick中断的使能不是NVIC_ISER控制的,因此这里的方法没有办法处理这三个中断。
相关资源
  • 所需E币: 0
    时间: 2023-11-15 15:02
    大小: 2.91KB
    从0到1训练自己的大模型,揭密Chat背后的技能与应用,完结11章,源码+PPT下载!那么,什么是大模型呢?大模型是指具有大规模参数和复杂计算结构的机器学习模型。本文从大模型的基本概念出发,对大模型领域容易混淆的相关概念进行区分,并就大模型的发展历程、特点和分类、泛化与微调进行了详细解读,供大家在了解大模型基本知识的过程中起到一定参考作用。那么,大模型和小模型有什么区别?小模型通常指参数较少、层数较浅的模型,它们具有轻量级、高效率、易于部署等优点,适用于数据量较小、计算资源有限的场景,例如移动端应用、嵌入式设备、物联网等。而当模型的训练数据和参数不断扩大,直到达到一定的临界规模后,其表现出了一些未能预测的、更复杂的能力和特性,模型能够从原始训练数据中自动学习并发现新的、更高层次的特征和模式,这种能力被称为“涌现能力”。而具备涌现能力的机器学习模型就被认为是独立意义上的大模型,这也是其和小模型最大意义上的区别。相比小模型,大模型通常参数较多、层数较深,具有更强的表达能力和更高的准确度,但也需要更多的计算资源和时间来训练和推理,适用于数据量较大、计算资源充足的场景,例如云端计算、高性能计算、人工智能等。基于负采样的softmax计算现在随着GPU计算性能的增加,几万个类别已经不算太大所以现在LM一般不使用这个技巧了。几万类别ok,但几百万、几千万类别呢?人脸识别。为什么现在很难基于人脸去直接识别顾客的基本信息,非得先录入。现在基本都是人脸匹配,只是基于已经有图片进行查找,而不是直接去分类。就是因为真正去分类类别数量太大,如果是全国范围,就是14亿的类别。树型结构的本质是二叉树,在计算机(无论算法还是工程)领域,应用案例随处可见。结构体也是开发中使用频率极高的一种数据类型,本节我们就来看看结构的一些重要知识点。我们先看下面的例子:packagemainimport("log""unsafe")typeStstruct{f1int8f2int16f3int64}typeSt1struct{f1int8f3int64f2int16}funcinit(){log.SetFlags(log.Lshortfile)}funcmain(){st:=St{}st1:=St1{}log.Println(unsafe.Sizeof(st))log.Println(unsafe.Sizeof(st1))log.Println(unsafe.Sizeof(int8(1)))log.Println(unsafe.Sizeof(int16(1)))log.Println(unsafe.Sizeof(int64(1)))}我们可以理解为切片数据的一个快捷方式,其地址跟原始切片是一致的,所以在函数内对切片进行修改会影响到原始切片的值。但是需要注意的是,我们在函数内对切片进行重新赋值会改变函数内实参的数据地址的指向:我们可以通过下面的代码来理解:packagemainimport("log""reflect")funcinit(){log.SetFlags(log.Lshortfile)}funcmain(){//s:=[]int{1,2,3}s:=make([]int,0,6)s=append(s,1,2,3)log.Printf("s:%p",s)assignSlice(s)chageSliceItem(s)log.Println("s:",s)appendSliceItem(s)log.Println("s:",s)//通过反射改变切片的长度reflect.ValueOf(&s).Elem().SetLen(4)log.Println("s:",s)}funcassignSlice(param[]int){log.Printf("assignSliceparam:%p",param)s1:=[]int{1,2,3}//param与函数外的切片s解除引用关系,同时param将指向s1的数据地址param=s1log.Printf("assignSliceparam:%p",param)param[0]=5}//会影响到函数外切片的值funcchageSliceItem(param[]int){param[0]=4}funcappendSliceItem(param[]int){log.Printf("appendSliceItemparamaddr:%pcap:%d",param,cap(param))//发生扩容,指向的数据地址发生了变化(发生了copy),所以不会影响到函数的切片param=append(param,5)log.Printf("appendSliceItemparamaddr:%pcap:%d",param,cap(param))}Jackson开发方法Jackson开发方法是一种面向对象的软件开发方法,它的核心是通过对问题域的分析和描述来构建类图和类之间的关系图。Jackson开发方法强调在开发过程中使用类图和流程图来描述软件系统的结构和行为,并通过使用设计模式和框架来提高代码的可重用性和可维护性。与CMM模型、结构化开发方法和面向对象开发方法相比,Jackson开发方法更注重软件系统的分析和设计,能够更好地描述软件系统的结构和行为。但是,它对需求的分析和描述可能不够全面和详细,需要结合其他方法进行补充和完善。综上所述,CMM模型、结构化开发方法和面向对象开发方法各有其优缺点,需要根据具体的项目需求和情况进行选择。UML是标准的建模语言,可以用于各种软件开发方法的建模。Jackson开发方法是面向对象的软件开发方法的一种,与其他方法可以相互补充和完善。大模型开发工具与开源社区,Colossal-AI再次迭代,提供开箱即用的8到512卡LLaMA2训练、微调、推理方案,对700亿参数训练加速195%,并提供一站式云平台解决方案,极大降低大模型开发和落地应用成本。
  • 所需E币: 5
    时间: 2021-9-10 23:01
    大小: 422.29KB
    上传者: czd886
    一个面向嵌入式系统实时性能优化的抢占模型