AUTOSAR ArcticCore重构 - for_each_HOH】的更多相关文章

Arctic Core是AUTOSAR的实现,早期版本是开源的. 基本问题 在ARM架构下对CAN driver的实现(arch/arm/arm_cm3/drivers/Can.c)中,有这样一段代码: Can_Arc_Hoh是个数组,数组每个元素含有Can_Arc_EOL标识是否是最后一个元素,最后一个元素为0,其他为1. 这里利用指针hoh先--,然后++,然后使用do while循环来遍历数组每一个元素,遍历完Can_Arc_EOL为1的元素亦即最后一个元素后结束循环. hoh先--,后+…
基于官方arc-stable-9c57d86f66be,AUTOSAR版本3.1.5 基本问题 Arctic Core中的代码组织有很多有待改进的地方,这里先提出几点: 1. 头文件引用混乱,所有头文件通过从搜索路径(-I)中引用,存在名称污染问题,需加入路径信息: 2. 编译系统中代码文件是否编译及目标文件集中定义在boards/board_common.mk,而非分属各自模块: 3. 编译系统中所有代码文件通过搜索路径(VPATH)中搜索,存在名称污染问题,需加入路径信息: 4. 编译系统中…
基于官方arc-stable-9c57d86f66be,AUTOSAR版本3.1.5 基本问题 Arctic Core中使用了VALIDATE, VALIDATE_RV, VALIDATE_NO_RV等一系列宏简化参数判断. #if ( CAN_DEV_ERROR_DETECT == STD_ON ) #define VALIDATE(_exp,_api,_err, ... ) \ if( !(_exp) ) { \ (,_api,_err); \ return __VA_ARGS__;\ }…
基于官方arc-stable-9c57d86f66be,AUTOSAR版本3.1.5   基本问题 3. 编译系统中所有代码文件通过搜索路径(VPATH)中搜索,存在名称污染问题,需加入路径信息:   ArcCore的编译系统中,定义了大量的vpath-y路径,所以定义目标文件的时候,直接使用 obj-y += xxx.o . 与头文件一样,这里也存在名称污染的问题,如果两个目标文件的名称相同,则会出现问题.   解决办法即是在目标文件中加入路径信息.如: obj-y += communicat…
基于官方arc-stable-9c57d86f66be,AUTOSAR版本3.1.5   基本问题 1. 头文件引用混乱,所有头文件通过从搜索路径(-I)中引用,存在名称污染问题,需加入路径信息:   ArcCore代码的编译系统中,定义了大量的inc-y路径,最后使用-I参数将这些路径加入到编译器的命令行参数中.而代码文件中,引用头文件时都是直接使用 #include "xxx.h" 的形式.   这样有几个问题: 1. 编译系统负担过重,需要加入大量的头文件搜索路径: 2. 导致头…
好久没写代码了,终于好不容易接到了开发任务,一看时间还挺充足的,我就慢慢整吧,若是遇上赶进度,基本上直接是功能优先,完全不考虑设计.你可以认为我完全没有追求,当身后有鞭子使劲赶的时候,神马设计都是浮云,按时上线才是王道,毕竟领导是不会关注过程和代码质量的,领导只看结果,这也许就是我等天朝码农的悲哀. 需求:是这样的,要开发一个短信发送的模板,不同客户可能会使用不同的模板,而不同的客户使用的变量参数也是不同的.之前为了应急,线上已经完成了一个短信模板发送短信的功能,短信模板表也创建了,而且在表中已…
CSharpGL(17)重构CSharpGL CSharpGL用起来我自己都觉得繁琐了,这是到了重构的时候. 下载 CSharpGL已在GitHub开源,欢迎对OpenGL有兴趣的同学加入(https://github.com/bitzhuwei/CSharpGL) 核心N合一 为了解耦,我把CSharpGL核心拆分为5个DLL.然后发现这只会带来麻烦.用的时候要引用多个DLL,开发的时候也没有益处.于是全部N合一,成为一个CSharpGL.dll. 现在的版本内容如上图所示. Demo:GLC…
系列目录 前言:这是对本文系统一次重要的革新,很久就想要重构数据访问层了,数据访问层重复代码太多.主要集中增删该查每个模块都有,所以本次是为封装相同接口方法 如果你想了解怎么重构普通的接口DAL层请查看第二节点 如果你只想了解利用T4链接EF生成代码,可以忽略前两节,之后跳后最后T4模版的使用. (代码在最后) 补充: 最后必须让初学者理解一个知识点:分部类 partial 关键字,因为我们的重构是围绕分部类而实现,包括接口 partial 关键字指示可在命名空间中定义该类.结构或接口的其他部分…
系列目录 前言:  这应该是本系统最后一次重构,将重构BLL层和Model层.来完全取代代码生成器生成的BLL层和DAL层.完全废掉了代码生成器的DAL,BLL,MODEL层.  全自动生成增,删,改,查的通用方法和模型转换与BLL层的模型事务脱离,后续文章,会以一些插件或功能为目的,继续完善,进行分享,最后60节的文章会对本系统做一个总结 (但是还没时间写,相信60节的文章能让你快速了解到本系统的优势和架构,就算你从未阅读之前的所有文章)   继上次的DAL层重构(上一节),本来只想重构DAL…
思路分析: 向后滚动鼠标滚轮,页面向下全屏切换:向前滚动滚轮,页面向上全屏切换.切换过程为动画效果. 第一屏时,导航栏固定在页面顶部,切换到第二屏时,导航条向左滑动隐藏.切换回第一屏时,导航栏向右滑动显示. 页面显示的不是第一平时,当鼠标指针滑动到页面的头部区域,导航栏向右滑出:鼠标指针移出头部区域时,导航栏向左滑动隐藏. 当视口尺寸小于768px时,切换页面不隐藏导航条,但是导航条的项目要隐藏,通过点击按钮来显示和隐藏项目. 本篇代码是重构前的代码. HTML代码: <!DOCTYPE htm…