logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

为海思u-boot快速生成reg_info.bin文件

在海思平台的底层开发中,SoC的引脚、时钟的配置是通过一个Excel表格生成的reg_info.bin来实现的,这个reg_info.bin文件是在编译u-boot过程中需要的,可以通过查看最终的u-boot镜像文件的生成过程得知:为了快速生成reg_info.bin文件,需要抛弃Excel表格,在编译u-boot的过程中自动生成reg_info.bin,并重命名为.reg...

#嵌入式
一种踩内存的定位方法(C++)

在嵌入式应用开发过程中,踩内存的问题常常让人束手无策。使用gdb调试工具,可以大幅加快问题的定位。不过,对于某些踩内存的问题,它的表现是间接的,应用崩溃的位置也是不固定的,这就给问题定位带来了更大的困难。笔者见过带有虚函数C++的类对象在试图调用虚函数时,因指向虚函数的表指针被踩了,导致获取虚函数的地址是错识的,从而应用崩溃。此问题的表现就是间接的:在踩内存发生时,应用没有崩溃...

#嵌入式
U-Boot的重定位实现机制

获取当前芯片平台的相关信息为了深入了解ARM 64位芯片架构,笔者为u-boot添加了archinfo命令,以获取CPU当前的工作状态等信息。不过在增加完整的64位ARM架构信息查看功能之前,笔者首先增加了简单的获取当前PC指针及栈指针的函数:diff --git a/arch/arm/lib/arch-info.c b/arch/arm/lib/arch-info.cnew file mode

使用Numpy训练基于MNIST数据集的深度卷积神经网络

在《Fundamentals of Deep Learning》一书中,作者将深度神经网络中的隐藏层的作用描述为"This is where most of the magic is happening when the neural net tries to solve problems";不过,从计算的角度来看,深度神经网络是一种功能强大的非线性变换,各个层的权重有着特定的

在Ubuntu-12.04环境下使用新的Rust开发工具

这种修改、替换应用使用的动态链接器(从而间接指定使用的glibc动态库)的方法,可以方便地为老系统安装一些新的应用。在一些工作环境受限的条件下(如不能安装新的系统作为开发环境),能够让我们不受过多的限制,不影响我们对开发工具的选择。

#ubuntu#rust#linux
嵌入式Lua开发环境的搭建

背景作为一个嵌入式软件从业者,近几年的工作经历渐渐感觉到了从事嵌入式软件开发,工作投入高而产出低。提高工作效率的方法,笔者认为其之一是尽量避免使用C/C++语言进行嵌入式系统层面的开发,而是根据开发的具体系统功能,选择适合语言来开发。通常而言,C/C++的运行效率高而开发效率低,大多数脚本语言则运行效率不及使用C/C++开发的应用,而开发效率要高很多。近来半载在“高人”的带领下,接触到了基于开源项

#linux#嵌入式
为嵌入式设备编译Rust/dbus进程间通信组件

本文演示了如何交叉编译Rust/DBus模块并在嵌入式设备上运行简单示例的过程

#rust#开发语言
为嵌入式设备编译Rust/dbus进程间通信组件

本文演示了如何交叉编译Rust/DBus模块并在嵌入式设备上运行简单示例的过程

#rust#开发语言
使用QEMU虚拟机调试Linux内核

作为一名初级的嵌入式底层开发人员,若想要深入学习Linux内核,需要谨慎地选择开发环境和开发工具。与应用层开发不同的是,Linux内核的学习和开发调试通常是比较困难的,原因之一在于可用的Linux内核调试工具比较少。很久以前笔者注意到安卓工程中使用到了QEMU虚拟机模拟了安卓硬件设备,可以完整地运行安卓系统(从物理按键和显示、触摸屏,到Linux内核,直至Framework层)。还有QEM...

[Linux内核]AArch64平台任务切换的实现

本文探究在AArch64平台,Linux内核任务切换的实现机制。使用的调试工具主要为gdb及qemu虚拟机,调试的内核版本为5.3.12。笔者在实际工作中遇到一些互斥锁的操作;当一个进程或内核线程尝试对互斥锁加锁时,若该锁已被锁住,该进程或内核线程就会进入挂起、阻塞状态。此过程就会引发任务切换,通过调用kernel/sched/core.c中的schedule函数,逐步切换到其他的内核任务...

    共 11 条
  • 1
  • 2
  • 请选择