头像-47865

沃尔夫斯堡的羊

  • 10南京市
  • 单片机、嵌入式、DSP、模拟技术、传感器/MEMS
  • 消费电子、通讯广播、计算机网络

个人成就

获得 114 次赞

帮助过282人

系统开发中设备树 Device Tree相关问题

在系统开发中,为了抚平伟大的Linus Torvalds的怒气,出现了设备树的概念,Device tree看完资料在这里请教几个问题:1)设备树具体的作用的是啥?用来在系统上电启动过程中挂接设备,初始化设备?那么以后是不是系统每添加一个设备,都可以在其中添加一个节点?设备树能否做到初始化设备,若能还需要编写设备初始化代码么?更进一步,是否可以挂接设备驱动?若是,以后开发驱动流程是不是就清晰很多?2)设备树源文件为.dts,编译后得到.dtb,Bootloader在引导Linux内核的时候会将.dtb地址告知内核,这里的.dtb本质是什么格式的文件,二进制?Bootloader如何识别?

系统启动过程分Boot Loader两个阶段的原因和作用?

如题大概,系统启动过程中,比如计算机X86系统分为Boot和Loader两个过程,由BIOS在启动盘上寻找Boot,再由Boot加载Loader,最后由Loader加载内核,,1) 这个过程为什么会分为Boot和Loader两个步骤?原因何在?2) Boot和Loader的具体作用有什么不同?完成哪些事?3) 也有的是Boot直接加载内核,即BootLoader,这里二者为什么又可以合二为一,这样做需要具备什么条件,启动介质容量够大?还是启动介质的特点(寻址)?

架构和操作系统的区别

​在系统编程中经常会涉及到两个概念架构和操作系统,架构亦即指令集,如X86和Arm,操作系统如WindowsLinux以及其它嵌入式操作系统,这里请教一下,架构和操作系统的区别?比如Linux既能在X86上跑,也能在Arm上跑,这两者之间的区别是啥?是不是在实现Linux内核时需要裁剪(根据对应架构结构和组成只实现对应架构平台具有的模块,如外设驱动)?除去操作系统,通过汇编也能在相应架构的平台上实现软件功能,操作系统和架构之间有没有耦合的地方?

X86_64架构,ICC编译选项 mon-red-zon是啥

如题,在X86_64架构中,ICC工具链编译选项 mon-red-zo​ne是什么意思?有哪位大神指点一下?好像是和X86_64架构中函数调用堆栈的使用有关?在使用makefile编译过程中,不加此选项时,elf文件加载运行起来一会儿就会死在某个地方,加了之后就不会出现此种状况,可以正常跑起来。。。

单片机编程中,硬件对应的描述结构体是如何和具体硬件对应的

如题,在单片机中如STM32编程中,对硬件的编程是对硬件相关寄存器的操作,如初始化GPIO口GPIO_Init(GPIO_TypeDef* GPIOx GPIO_InitTypeDef* GPIO_InitStruct),GPIO_Init(GPIOA &GPIO_InitStruct);中是怎么确定其指定的结构体GPIOA对应的就是硬件GPIOA口?是在某个头文件中已经定义了各硬件符号和内存编址(包括寄存器编址)的关系?如果设计,厂家是怎么弄的?

原子操作是针对硬件(处理器)还是软件(多线(进)程)?

如题,在某本书中看到关于介绍 原子操作的说明有这样一句话“在单处理器系统中,永远都不会发生内存总线窃用的情况”,这说明单处理器从内存中读取数据、更新数据并把更新后的数据写回到内存中这样的“读-修改-写”的操作是原子的,可是又记得多线程中也介绍原子操作,是针对多线程而言,,,那么,单处理器中如果存在多线程应用,对同一个内存位置进行操作(不是原子操作),这与前面关于单处理器内存读修改写的操作是原子的,会不会有冲突?线程同步也会形成原子操作,,亦或原子操作是针对多处理器还是多线程?

系统黑匣子,如飞机上的黑匣子是如何实现保存数据不丢的?

如题,系统的黑匣子可以在系统故障时保存系统状态信息,比如飞机上著名的黑匣子,可是,当飞机出现故障时(失事)时,系统断电,黑匣子是如何工作的?莫非有自己独立的供电系统?另黑匣子保存的是即时数据?还是历史数据?在系统设计中该如何实现?有什么可以借鉴的地方?

Linux系统驱动开发中,由file_operation结构体初始化而引发的问题

嵌入式Linux系统驱动开发中,填充file_operation结构体,比如static const struct file_operations globalmem_fops = {    .owner = THIS_MODULE    .llseek = globalmem_llseek    .read = globalmem_read    .write = globalmem_write    .unlocked_ioctl = globalmem_ioctl    .open = globalmem_open    .release = globalmem_release};这种对结构体成员初始化/填充的方式可不可以应用到一般的C程序中对结构体初始化?还是有其他要求,如成员是函数?