我正在尝试交叉编译一个文件以闪入 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) 我最近开始使用minicom并且我总是需要做
我没有找到任何东西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)。
有没有办法让它成为默认行为?
我最近购买了一块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) 我正在使用wxMaxima 16.12.0(Maxima 5.39.0),当我尝试打印输出时,我得到重叠的文本.
这是一个例子(请忽略命令无法正确的事实)
第一张图片
有时也会发生print和printf(在一个区块内)
第二张图片
printf(true, "Link ~d~%", i),
print("+------------------------------------------------+"),
Run Code Online (Sandbox Code Playgroud)
但是在街区之外
第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:如果我剪切命令,输出将以合适的方式"重组"
成为
我正在尝试编写内核(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 ×2
arm ×1
gcc ×1
i2c ×1
linux ×1
linux-kernel ×1
maxima ×1
newlib ×1
sensors ×1
serial-port ×1