小编ign*_*gng的帖子

交叉编译 - 错误:所选处理器在 ARM 模式下不支持 `fmrx r3,fpexc' - Beaglebone

我正在尝试交叉编译一个文件以闪入 Beaglebone Black。一切正常,但如果我尝试启用 FPU

#define set_en_bit_in_fpexc() do { \
    int dummy; \
    __asm__ __volatile__ ("fmrx %0,fpexc\n\t" \
                         "orr  %0,%0,#0x40000000\n\t" \
                         "fmxr fpexc,%0" : "=r" (dummy) : :); \
} while (0)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

Error: selected processor does not support `fmrx r3,fpexc' in ARM mode
Error: selected processor does not support `fmxr fpexc,r3' in ARM mode
Run Code Online (Sandbox Code Playgroud)

我也尝试过thumb mode,但我遇到了同样的错误。当然,如果我删除初始化 FPU 的代码部分,它就可以正常工作。

为什么我会收到这些错误?

生成文件

[...]
CROSSPATH?=/usr/bin
CROSSPFX=$(CROSSPATH)/arm-none-eabi-
CC=$(CROSSPFX)gcc
AS=$(CROSSPFX)as
LD=$(CROSSPFX)ld
NM=$(CROSSPFX)nm
OBJCOPY=$(CROSSPFX)objcopy
OBJDUMP=$(CROSSPFX)objdump
CFLAGS=-Wall -Wextra -O2 -ffreestanding
ARCHFLAGS=-mcpu=cortex-a8 -march=armv7-a -mfpu=neon
CCARCHFLAGS=$(ARCHFLAGS) -marm …
Run Code Online (Sandbox Code Playgroud)

gcc arm cross-compiling newlib beagleboneblack

8
推荐指数
1
解决办法
7276
查看次数

minicom 默认使用扩展时间戳

我最近开始使用minicom并且我总是需要做

  • Ctrl+A+n (x2):每行时间戳(扩展)

我没有找到任何东西man(除了)

N Toggle between three states, whether each line is prefixed with current date and time, a timestamp is added every second, or no timestamps.

也不在 minicom 设置中 ( minicom -s)。

有没有办法让它成为默认行为?

serial-port

7
推荐指数
1
解决办法
5758
查看次数

访问设备的寄存器i2c

我最近购买了一块gy-521 板,我尝试通过以下连接将其与 Raspberry Pi 3 一起使用

RPi3     |     GY-521
---------------------
3.3V <-------> Vcc
GND  <-------> GND
SCL  <-------> SCL
SDA  <-------> SDA
Run Code Online (Sandbox Code Playgroud)

使用i2cdetect -y 1我获得以下信息

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- …
Run Code Online (Sandbox Code Playgroud)

c linux i2c raspberry-pi3 sensors

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

wxMaxima:重叠打印

我正在使用wxMaxima 16.12.0(Maxima 5.39.0),当我尝试打印输出时,我得到重叠的文本.

这是一个例子(请忽略命令无法正确的事实)

第一张图片

重叠印刷

有时也会发生printprintf(在一个区块内)

第二张图片

    printf(true, "Link ~d~%", i),
    print("+------------------------------------------------+"),
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

第3张图片
在此输入图像描述

但是在街区之外

第4张图片

在此输入图像描述

这使得所有输出完全不可读,并且我的程序很重视它.我认为在第3张图片中,问题在于分母处的2是导致输出"缩小"的.

我该如何解决?这是我的问题还是千里马?

OS: Mint 18 sarah  
Kernel: x86_64 Linux 4.4.0-57-generic  
DE: Cinnamon 3.0.7
Run Code Online (Sandbox Code Playgroud)

PS我也注意到,有时候,重新运行以前的命令可以使"可读"以下,但这总是随机发生的

编辑1:我注意到我安装的最后一个软件包

libwxbase3.0-dev 
libwxgtk3.0-dev 
libwxgtk3.0-0v5
libwxbase3.0-0v5
Run Code Online (Sandbox Code Playgroud)

难道存在某种冲突吗?

EDIT2:如果我剪切命令,输出将以合适的方式"重组"

在此输入图像描述

成为

在此输入图像描述

maxima

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

为什么你不能在内核中使用科学记数法

我正在尝试编写内核(4.8.1)模块,如果我使用的话

if (hrtimer_cancel(&hr_timer) == 1) {
         u64 remaining = ktime_to_ns(hrtimer_get_remaining(&hr_timer));
         printk("(%llu ns; %llu us)\n", remaining,
         (unsigned long long) (remaining/1e3));
}
Run Code Online (Sandbox Code Playgroud)

它引发了这个错误

error: SSE register return with SSE disabled
   printk("\t\t(%llu ns; %llu us)\n",
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          remaining,
          ~~~~~~~~~~
          (unsigned long long) (remaining/1e3));
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

如果我使用

if (hrtimer_cancel(&hr_timer) == 1) {
         u64 remaining = ktime_to_ns(hrtimer_get_remaining(&hr_timer));
         printk("(%llu ns; %llu us)\n", remaining,
         (unsigned long long) (remaining/1000));
}
Run Code Online (Sandbox Code Playgroud)

它没有问题.

那你为什么不能在内核中使用科学记数法呢?我的意思是,我认为是更容易和更可读的使用1e3; 1e6; 1e9,而不是1000; 1000000; 1000000000.

只是可移植性/健壮性问题?
或类似的东西(在这种情况下)

你需要ns吗?使用ktime_to_ns
你需要我们吗?使用ktime_to_us
你需要ms?使用ktime_to_ms

PS我试过一个简单的.c程序,它没有问题

#include …
Run Code Online (Sandbox Code Playgroud)

c scientific-notation linux-kernel

4
推荐指数
1
解决办法
199
查看次数