PUPANVR-建立开发环境及日记、一些基本工具功能添加(3)

开发环境配置

编译环境系统

ubuntu-20.04.2.0-desktop

硬件:

主控:Hi3536C;

FLASH: 16MB SPI Nor FLASH;

DDR: 512MB

        对应的硬件是之前买的一个方案公司的16路NVR板,都不也轻易的烧写他的uboot,kernel,怕起不了啊!!!没有对应的硬件资料!

BSP版本:

Hi3536C V100R001C02SPC040

日记管理

        工程目录中的log目录。

先把日记打印功能添加上,方便调试。之前比较多的项目中使用了glog这个库,感觉也挺好用的,用的功能比较简单,这里就用这个库吧。

        嵌入式系统中一般存储都很有限,这里先不写文件,后续写一个glog的sink及加一些日记文件管理的策略进去。

        添加一个单独的目录管操作日记,使用一个单例的实例类来管理这个日记功能。

        glog里有一个比较好用的功能,即设置InstallFailureWriter,即在出错时,或程序崩掉时,会把一些简单的堆栈打印出来,不过很多时间也打印不出来,有时程序core dump时还是会有时给到一些信息,查找程序问题的。

代码中的断言

        以前的一些开发习惯,我会比较多的在程序中逻辑、业务中不太可能出现、或出现即是错误的地方加断言,同时想着把断言打到日记里,所认加了一个ASSERT的宏定义,只是加了一个在出现问题时,把断言打到日记里。

见assertdef.h

三方库工具的编译和管理

        三方库工具都放在工程third_party目录里,本来想用buildroot来构建文件系统和三方工具这些库的,还是先用以前的习惯,简单的放在一个third_party里,在里面建了一个tarball的目录,工程所有用到的三方库的源代码都放在这里,同时针对不同的芯片方案,建立一个目录,编写对应的编译脚本,以前这样做主要是想做到一键把所有的三方库给编译了,有对应的三方库的修改补丁也放在里面,以免后续的人来维护时,不了解是如何编译的和自己打过哪些补丁。

对像单例的使用

        对于很多类的对像,模块,在应用中都基本是单例的存在,比如日记管理、存储管理等,如果用C++,基本是抽像成一个类,创建一个对应的实例这样子用,我会比较习惯把这些对像建立成一个单例,这样用任务地方用,只要引用这个类的头文件,同时把类的构造、析构函数声明为private,调用类对应的单例获取函数即可!如TLog里的getInstance方法。

        后续可能会比较多的地方使用这样的操作方式,以前在C语言环境里习惯,创建一个整个业务的Context上下结构体,把所有的对像指针放在这个上下文结构体里,这样也可以方便的集中管理,不管是在C或C++里都挺好的。不过感觉在嵌入式里,其实好多单例直接用类的一个getInstance方法来获取挺爽的(前提应用中这个类就只创建这一个实例就够了,并把构造、析构函数不让用户调用),这样也比较好写代码!

猜你喜欢

转载自blog.csdn.net/jhting/article/details/121708882
今日推荐