小编mar*_*tus的帖子

写在mtd块设备上

我正在尝试使用MTD块设备在NAND闪存上写,但我不明白一切.

在这里读到

  • mtdblockN 是只读块设备N.
  • mtdN 是读/写字符设备N.
  • mtdNro 是只读字符设备N.

但是我想用writeC中的一个简单的方法直接将字节写入分区,我不明白它是如何工作的(我读过一些我首先必须删除我要写的扇区).

我应该使用哪种设备以及如何在此设备上书写?

c linux embedded flash-memory

10
推荐指数
1
解决办法
3万
查看次数

C++ 仅链接静态库所需的部分

我正在尝试将静态库的某些部分链接到 Linux 下使用 g++ 用 C++ 编写的程序中。

my_lib.h

#ifdef USE_EXTERN_LIB
# include <extern_lib.h>
void do_something (struct extern_lib);
#endif

void do_other (int);
Run Code Online (Sandbox Code Playgroud)

my_lib.c

#include "my_lib.h"

#ifdef USE_EXTERN_LIB
void do_something (struct extern_lib l)
{
  // do something
}
#endif

void do_other (int a)
{
  // do something
}
Run Code Online (Sandbox Code Playgroud)

我使用 -DUSE_EXTERN_LIB 预处理器标志静态创建 libmy_lib.a 以将所有内容包含到其中。

但我想做的是创建两个程序:一个将这个库与 *extern_lib* 一起使用,另一个在不使用 *extern_lib* 的情况下使用它,即:

g++ -L/path/to/lib -lmy_lib -o prog_wihtout_lib prog_without_lib.cc 
g++ -DUSE_EXTERN_LIB -L/path/to/lib -lmy_lib -o prog_with_lib prog_with_lib.cc
Run Code Online (Sandbox Code Playgroud)

第二个程序可以编译,但第一个程序不能编译,它说 extern_lib 未声明。

使用动态库,没有问题,因为符号是在运行时加载的,但我想要一个静态库。有没有办法只链接静态库所需的模块?

编辑

prog_without_lib.cc

#include "my_lib.h"

int main …
Run Code Online (Sandbox Code Playgroud)

c++ static g++

5
推荐指数
2
解决办法
1412
查看次数

切换到保护模式后"呼叫"

我正在尝试切换到intel x86中的保护模式.

我已经用lgdt加载了我的gdt,将cr0的P标志设置为1和所有段选择器但是当我从函数调用返回时,我无法调用任何其他函数或者我得到此错误

qemu: fatal: Trying to execute code outside RAM or ROM at 0xfeeb7c5b
Run Code Online (Sandbox Code Playgroud)

这是我的switch_to_pmode函数:

gdtr:
.short      23  // limit
gdtr_base:
.long       0   // base

switch_to_pmode:
    movl $null_segment, %eax        // Address of the first byte of the GDT
    movl %eax, gdtr_base

    cli             // disable interrupts

    lgdt (gdtr)

    movl %cr0, %eax
    or $0x1, %eax
    movl %eax, %cr0         // Set the PE flag

    push $0x8
    push $reload_segments
    lret

reload_segments:
    movl $0x10, %eax
    movl %eax, %ds
    movl %eax, %ss
    movl %eax, %es …
Run Code Online (Sandbox Code Playgroud)

assembly kernel att

5
推荐指数
1
解决办法
754
查看次数

标签 统计

assembly ×1

att ×1

c ×1

c++ ×1

embedded ×1

flash-memory ×1

g++ ×1

kernel ×1

linux ×1

static ×1