标签: microprocessors

在Beaglebone Black上启用UART

我无法启用UART.关于如何从更新uEnv.txt文件到更新内核启用和解决问题,我已经经历了许多不同的方向.我得出的结论是,使用与指令不同的内核可能是一个问题,但我不确定?我不太了解Beaglebone,我还在学习.每当我尝试使用Python测试UART并输入以下内容时:

导入Adafruit_BBIO.UART作为UART

UART.setup( "UART1")

我收到错误:文件"stdin",第1行,在模块中

RuntimeError:无法导出UART通道.

我也开始担心我根本没有capemgr.当我运行命令时:

ls sys/devices

我没有列出capemgr.

我正在使用最新的Debian Image:Jessie Debian 8.3(2016-01-24)

我正在运行的内核版本是4.1.17-ti-rt-r46.

我的DTC版本是1.4.1-g1e75ebc9

我真的很感激任何帮助.我几天来一直在努力解决这个问题.谢谢!

debian microprocessors uart beagleboard beagleboneblack

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

计算机如何区分数据和指令?

我在一台8位PC上观看了一个视频 - 手动,使用物理开关.

美联储的计划是:

MAIN:
    0000 0001 0100     # 0 = LDA [4]
    0001 0010 0101     # 1 = ADD [5]
    0010 0101 0000     # 2 = OUT
    0011 1111 0000     # 3 = HLT

DATA:
    0100 00001110      # 4 = #14
    0101 00011100      # 5 = #28
Run Code Online (Sandbox Code Playgroud)

我想知道的是计算机如何区分数据和指令,因为没有标记可以从指令中划分数据.

0001 0001 0010可以解释为:

1 = LDA [2]
Run Code Online (Sandbox Code Playgroud)

要么:

1 = #10
Run Code Online (Sandbox Code Playgroud)

是因为在程序运行时,地址被视为指令.但由于HLT,程序停止执行内存地址,就像它们是指令一样,并留下更高的地址; 然后LDA/ADD/SUB等将内存中的所有位置视为二进制值.

在那种情况下,会:

0000 0010 0000可解释为:

0 = ADD #32
Run Code Online (Sandbox Code Playgroud)

并不是

0 = ADD [ ADD [ ADD [ …
Run Code Online (Sandbox Code Playgroud)

assembly machine-code microprocessors 8-bit

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

堆栈指针和程序计数器有什么区别?

众所周知,微处理器执行任务的过程只是从存储器一个接一个地执行二进制指令,并且有一个程序计数器保存下一条指令的地址。因此,如果我没有记错的话,这就是处理器执行任务的方式。但是还有另一个名为堆栈指针的指针,它的作用与程序计数器几乎相同。我的问题是为什么我们需要一个堆栈指针来指向内存(堆栈)的地址?有人可以告诉我堆栈指针和程序计数器之间的主要区别吗?

arm microprocessors program-counter stack-pointer

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

结构大小,填充和未来

考虑以下程序

#include <cstdio>
#include <stdint.h>

struct Foo
    {
    int32_t a;
    int32_t b;
    int32_t c;
    };

struct Bar
    {
    int32_t a;
    int32_t b;
    int16_t c;
    };

int main()
    {
    printf("sizeof(Foo)=%u\nsizeof(Bar)=%u",sizeof(Foo),sizeof(Bar));
    return 0;
    }
Run Code Online (Sandbox Code Playgroud)

在使用MinGW进行编译时,我在32位和64位系统上得到sizeof(Foo)= 12和sizeof(Bar)= 12(我想在16位环境中,sizeof(Bar)= 10).是否有可能在未来,这些结构的大小将是16,以便在64位环境中更好地适应?

我将结构存储在文件中,并且不希望将来添加解决方法.Doom的东西结构布局可能是一个很好的选择1993但不是今天.

c compiler-construction padding microprocessors word-size

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

一个16位机器可以处理64位(数据类型,如long int,float ...)操作?

16位机器可以对64位数据类型执行操作吗?

我知道它可以使用两个寄存器执行32位乘法,但不知道它如何处理64位数据?

embedded microcontroller microprocessors

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

8使用4位2操作数指令以8位格式注册机器

我正在研究微处理器和在大学的接口,我遇到了一个非常难以解决的问题.

"你能设计一个8位指令格式,允许4个2操作数指令用于具有8个寄存器的机器"

我不是100%肯定它的要求,正确的方向上的一点将非常感激.

注意:本课程基于AVR板上的学习汇编程序(如果有帮助).

instruction-set microprocessors

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

将超频8085微处理器会减少时钟周期数

我正在研究8085微处理器,发现它工作在3 Mhz上,例如需要4个时钟周期来进行操作码读取,3个时钟周期用于IO/M读取或写入.

那么现在,如果我以某种方式超频8085以10 Mhz工作,那么时钟周期的数量会减少吗?
或者循环次数保持不变但是3或4个完整循环的有效时间会减少?

clock cpu-architecture microprocessors 8085

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

在DOSBox的Sound Blaster设备上播放.wav文件

我想在assembly/8086/masm/dosbox中制作一个程序,将键盘变成各种乐器,所以我需要能够播放一些.wav文件以产生所需的声音.我知道beep char并通过声音产生声音向pc扬声器发送频率(端口41h,42h和61h),但两种方式显然不会让我在那里.

我四处搜索,发现我需要int 21h使用Sound Blaster打开文件,了解.wav格式和声音编程知识.

不幸的是我找不到任何有用的文档如何在Dosbox(或一般)中使用Sound Blaster,如果你可以帮助我解决如何在dosbox上播放.wav文件的问题,或者如果你有任何解决方法我是所有的耳朵(更准确的眼睛).

audio assembly wav microprocessors x86-16

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

什么是WAW危害?

维基百科的危害(计算机体系结构)文章:

写后写(WAW)(i2试图在写操作数之前写操作数i1)在并发执行环境中可能发生写后写(WAW)数据危险。

示例例如:

i1. R2 <- R4 + R7   
i2. R2 <- R1 + R3   
Run Code Online (Sandbox Code Playgroud)

的写回(WB)i2必须延迟到i1完成执行为止。

我还不明白

如果i2执行之前有i1什么问题?

assembly pipeline cpu-architecture microprocessors

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

现代计算机能否在机器级别区分数据和指令?

我正在阅读《The Shellcoder's Handbook》这本书,然后我发现了以下信息:

现代计算机对指令和数据没有真正的区别。如果处理器在应该看到数据时可以收到指令,那么它会很乐意执行所传递的指令。这一特性使得系统利用成为可能。

就在那时我意识到我们的现代系统是多么脆弱:(但这本书有点旧了,所以我做了一些研究,但找不到足够的信息来满足我。是否仍然不存在任何方法可以区分数据数据指示

附带问题 典型的汇编文件包含三个段: .text .bss.data

还有其他方法可以区分这些吗?[无元数据]

stack-overflow assembly cpu-architecture microprocessors penetration-testing

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