4 longyu_wlz

尚未进行身份认证

linux music writing

等级
TA的排名 6w+

使用 awtk fb 项目与 valgrind 检测基于 awtk 开发的 gui 程序中的内存泄露问题

awtkfb为什么要编这个东东内存泄露检查的需要启动vgaconsolemode运行demo无法正常显示无法在tty上点击gpmdemo无法使用鼠标与键盘设备即文件添加必要的权限输出信息影响显示尝试ssh到虚拟机中执行!!!不能在xwindows开启的情况下执行...

2019-08-20 17:38:35

对软件框架的思考

框架是什么?平台意义的软件包,提供一套完整的解决方案。框架一般是针对某一种特定的领域进行设计,提供该领域中完整的一套编码解决问题的方案。提供统一的api,将领域问题进行抽象,抽象出相对通用的平台。这个平台是领域问题与用户之间的桥梁。有了这个桥梁,用户不需要对领域问题的各个方面都有所了解便能够使用平台提供的接口编码以实现具体的需求。这样说它实际是讲问题转向了更高的层次,用户不必研究底层的细节,而...

2019-09-03 23:18:27

带 99 的价格定位

为什么会有诸如599、699、799、999、1099、1999等手机价格?多一块钱与少一块钱对消费者的心理有怎样的影响?这些影响对等吗?首先,上面提到的价位都偏向中低端市场。相比给出一个以百为单位的价格,很多厂家选择将价格调低一元,这就让我们看到了很多带有99这个数字的产品价格。这样的做法是偶然的吗?可能并不是这样。鉴于有为数不少的价格定位,我这里以999为例来分析下这其中...

2019-10-14 10:04:57

c++ 类中的成员函数、虚函数、纯虚函数

成员函数成员函数是由编译器解释的,编译器只需要保证类中的成员函数只能够被类对象使用,同时将对象的指针作为成员函数的第一个参数传递即可。成员函数在编译过程中会根据对象的类型确定下来。成员函数在实际意义上仅仅是一个语法限制,它会被编译器转化为类似非成员函数类型,不存在额外的访问负载。成员函数又可以分为静态成员函数与非静态成员函数。对于非静态成员函数而言,this指针指向每一个对象的本地数据,...

2019-09-08 06:42:07

api 功能与实现的些许感想

对于功能的了解,通过学习源码的实现便能做到。对于实现的了解,功能亦是由实现来达成的。我们研究的大部分源码很多都不是自己写的,看源码是对功能不了解极有可能看的一头雾水。实际的开发过程中功能应该是首先需要明确的东西,需求分析就是要提炼出产品所要实现的各种功能。代码只是实现功能的手段。我们研究源码应该从功能出发,由外及内。对于未使用过的代码,应该先跑跑demo,学习如何使用,对各种接口有进一步的了...

2019-08-29 15:07:10

初始化程序运行的环境

pc端程序运行的环境的建立过程有很多被隐藏了,而在嵌入式中一般我们都能看到完整的建立过程。这些过程能够让我们更清楚程序执行所依赖的环境,同时也可能会让我们进一步思考这些环境对程序的表达能力的扩展。以rv32m1_vega为例!关中断——在临界区内初始化程序运行环境为什么这时候要关中断呢?你可以想想这时候程序执行的环境还没有建立起来,如果产生了中断,那么系统也无法处理,而且中断的优...

2019-09-05 18:23:17

实时操作系统中调试上下文切换与中断处理汇编的一些方法

在移植实时操作系统到一款新的板子上时,上下文切换与中断处理是需要用汇编来编写的,尽管可能平时很少写汇编,但是真的写起来其实也没太大难度!可是如果哪个细节没有搞清楚,那么可能会出现特别奇怪的执行过程。这时候最好不要直接调试,最好停下来梳理下整个处理流程,从头到尾审视下自己的处理过程,看看有没有明显的问题。如果没有发现明显的问题,那么就调试一下吧!可是调试上下文切换与中断处理比调试c函数要麻烦点...

2019-09-05 17:55:02

ld 链接脚本中标号名称可能造成的问题

问题描述在一款risc-v架构的开发板上,访问全局变量的时候出现了异常,调试发现全局变量的地址不正确。查看汇编发现全局变量的访问是通过gp寄存器中设定的全局指针加一个偏移量完成的,进一步查看这个寄存器的值,发现值不正确!我的思考gp是全局指针寄存器,这个寄存器在我之前移植的另一款芯片上并没有使用到,这让我对这个寄存器没有足够重视。不过这个问题应该是gp寄存器变量设定的值不对,...

2019-09-05 17:39:47

awtk 中统一接口的实例

统一接口的意义1.对跨平台适配的意义不同平台的接口与实现可能都不太相同,但其达成的需求是相同的。通过对需求进行抽象,统一调用接口,将不同平台的变化封装到更低的层次,系统中不直接调用不同平台的函数,而是通过抽象层来与底层对接,对于上层应用来说,这个样的做法屏蔽了平台的差异!2.对外部语言绑定的意义外部语言绑定时,统一接口有利于使用一套模板来生成代码,减少了重复的过程。3.对应用开发者...

2019-09-03 11:13:20

计数在软件设计中的应用

计数是一个非常普通的过程,虽其普通,却在软件设计中有很多的应用。在这篇文章中我便列举二三,仅供参考!动态数据结构的引用计数在一些动态数据结构中,常常能看到引用计数的影子。这里的引用计数初始化为0,被使用时加1,使用完成后减1。这里引用计数器大于0表示数据结构仍然有人使用,此时不能释放它,当引用计数减到0之后,表明没有人使用此数据结构,这时就可以调用相应的析构函数安全的释放其占用的...

2019-09-03 06:16:55

织女星开发板不能调试

问题描述问题分析复位引脚的问题。未运行程序的问题问题解决使用telnet连接来haltcpu,可能需要执行多次总结

2019-09-02 12:51:55

嵌入式中指定程序执行入口

在pc端用c语言编写程序的时候,main函数一般是我们认可的程序执行入口,可实际上在main函数之前一些函数已经开始执行,而我们所看到的程序执行起点——main函数也仅仅只是中间的过程而已。不过pc端这样的过程并不容易发现,但是在嵌入式中却暴露无疑。每一个芯片厂家会提供给客户一个启动脚本,这个启动脚本中完成了程序执行环境的初始化过程。在嵌入式开发中程序执行的入口点一般都不是...

2019-08-31 16:53:19

嵌入式中变量被意外修改的调试方法

问题描述在移植公司的实时操作系统到一款国产RISC-V架构芯片时,为了测试systick中断是否有效,在此中断isr中对一个静态变量加一,打断点观察变量的变化来确定中断是否正确执行了!中断isr的主要内容如下: isr_handler(void) { }...

2019-08-31 06:18:09

嵌入式中使用命令行调试程序

为什么需要使用命令行调试程序大部分时间内我们使用IDE中提供的功能就可图形化的调试程序,IDE为我们屏蔽了调试过程中的一些细节。在一些特殊环境中,我们可能不得不手动使用命令行来调试程序,这时如果事先没有研究过调试的步骤,也许会手忙脚乱。在本文中我就讲下使用命令行调试程序的一般步骤。调试步骤1.打开一个gdbserver端我们使用jlink调试的时候,通过将jlink与...

2019-08-30 16:20:21

上下文切换的思考

为什么要使用异常、中断来进行上下文切换?现代的处理器中,pc中一般保存的是下一条待执行指令的地址。上下文切换需要改变执行流,不管中间有怎样的过程,最终都会反映到pc值的变化上。那么我们可以如何改变pc的值?简单的思考后我们会发现子函数调用、子函数返回、中断、异常都有改变pc值以及改变栈帧的能力。虽然子函数的调用与返回拥有改变pc值的能力,但是它们无法做到动态切换栈帧,也没办...

2019-08-30 06:36:44

移植实时操作系统到 risc-v 架构芯片时上下文切换的实现

最近在将公司开发的实时操作系统移植到织女星开发板与另外一款国产的risc-v架构芯片的评估板上,在移植的过程中我对上下文切换的实现有了更深入的理解,在这里记录一下!1.上下文切换如何触发ARM中上下文切换通过触发一个【pendsv异常】来进行触发,实际的上下文切换过程由【pendsv】的异常处理程序来完成。通常pendsv的优先级设定为最低,以优先响应其它中断。在ris...

2019-08-29 10:55:23

gcc 优化问题

编译器优化的意义编译时优化,链接时优化。编译器优化的分类O0O2O3OS目前遇到的优化问题字符串常量的合并相同代码块中重复计算的合并优化产生bug的问题示例优化问题产生时的解决步骤是否真的造成了问题以结果来判定找出优化的内容生成中间文件来查看。指定编译参数为--dump-rtl-all。修改代码重新测试阻止编译器优化的方式编译器特殊指令h...

2019-08-26 08:59:04

awtk 动态生成页面的方案

需求分析一些【控制面板】的界面设计中常常需要根据客户现场的不同环境来【动态定制】控制对象,定制对象的主体是界面与功能。对于界面而言,不同的需求需要显示的东西是不同的,布局、语言这些也可能有所改变。这样的需求意味着我们可能需要对界面进行动态配置,根据配置参数来生成不同的界面。讲到这里就不得不面对下面几个问题,这里我以awtk为例,讲讲这种功能实现的一种思路,仅供参考!1.配置参数从哪里获...

2019-08-23 10:01:54

perl 中的引用

perl引用是什么perl引用的好处常见的几种引用数组引用哈希数组引用函数引用总结

2019-08-22 09:16:16

恢复 BIOS 默认配置后 Deban 10 无法引导

恢复BIOS默认值后只能引导win10手动选择从文件引导,在文件系统中选择grubx64.efi引导成功进入grub2中,选择Debian10启动项,成功启动系统重新更新grub。执行grub-install问题:win10的efi文件怎么被找到的呢?总结...

2019-08-17 05:41:24

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。