Tag: 硬件

RaspberryPi RS-232麻烦

我在Pi上使用RS-232线与激光测距仪进行通信。 我已经使用minicom以19200的波特率测试了两者之间的通信(因为这是LRF的波特率并且无法更改),并且它工作正常。 虽然写下LRF任何命令(由单个字符组成并按’enter’)可能需要多次尝试才能生效,但双向通信效果很好。 但是,当我开始使用C代码编程以使用RS-232进行读写时,它的一半工作。 这是我正在使用的代码: #include #include #include #include //SETUP UART0 int main(){ int uart0_filestream = -1; int loop; int i; int isError=1, rx_length; unsigned char rx_buffer[256]; useconds_t micro=3000; uart0_filestream = open(“/dev/ttyAMA0”, O_RDWR | O_NOCTTY | O_NDELAY); if(uart0_filestream == -1) printf(“ERROR: Unable to open UART\n\n”); else printf(“UART open\n\n”); struct termios options; tcgetattr(uart0_filestream, &options); options.c_cflag = […]

通过恒定长度遍历数组的访问时间

我想测量缓存的速度(我问了一个问题 ),所以我写了这段代码: #include #include #include const int mod = 100000007; volatile int f[100000007]; volatile int *p; int main() { FILE *f1; f1=fopen(“CacheTest.txt”,”w”); for(int l=1;l<=100000;) { clock_t st,ed; st=clock(); int now=0; for(int i=0;i=mod) now-=mod; } ed=clock(); double extime=(double)(ed-st)/CLOCKS_PER_SEC; st=clock(); now=0; for(int i=0;i=mod) now-=mod; } ed=clock(); double cost=(double)(ed-st)/CLOCKS_PER_SEC; fprintf(f1,”length %d costs %f seconds access time:%f\n”,l,cost,cost-extime); printf(“length %d […]

如何使用Python写入硬件中的寄存器?

我有一个C函数,通过打开设备描述符(nf10)可以完美地读/写硬件寄存器。 我正在尝试使用Python做同样的事情。 我能够读取寄存器,但我无法写入寄存器。 为什么我不能写? 有没有更好的方法来对硬件中的寄存器进行读/写操作? 相关的Python代码: #! /usr/bin/env python import os from fcntl import * from struct import * SIOCDEVPRIVATE = 35312 NF10_IOCTL_CMD_READ_STAT = SIOCDEVPRIVATE + 0 NF10_IOCTL_CMD_WRITE_REG = SIOCDEVPRIVATE + 1 NF10_IOCTL_CMD_READ_REG = SIOCDEVPRIVATE + 2 def rdaxi(addr): f = open(“/dev/nf10”, “r+”) arg = pack(“q”, int(addr, 16)) value = ioctl(f, NF10_IOCTL_CMD_READ_REG, arg) value = […]

读取STM32 MCU的SPI数据寄存器的值

有很多类似的问题,但似乎都没有相同的问题。 我正在将STML4 MCU连接到6轴传感器(LSM6DS3)。 我已经成功地在I2C中实现了所有function,但是想要SPI的额外速度(以及DMA,如果我可以使这些第一步工作……)。 因此,对于第一步,我试图读取设备的WHO_AM_I寄存器( 0x0F ),该寄存器应以0x69回复。 这是代码: uint8_t who = 0; // Sanity check/debugging aid should get 0x5D who = 0x43 + 0x1A; // Set SS low GPIO_WritePin (GPIOB, LL_GPIO_PIN_7, GPIO_PIN_RESET); // while tx buffer is in use, wait while (!LL_SPI_IsActiveFlag_TXE(SPI1)); // Send READ command to the WHO_AM_I register (SPI1->DR) = 0x8F; // while […]

检测内存页面大小

是否有一种可移植的方法来使用C或C ++代码(以编程方式)检测内存页面大小?

从我们按下键盘上的键开始,直到它出现在您的word文档中

这个问题在我的求职面试中……我只是想看看我是否提供了所有细节……

哪里可以从可编程硬件开始?

我已经想要在相当一段时间内至少学习一些关于编程硬件的想法,并且我想在这里要求得到一些起点。 我是一个有着Delphi和Objective-c经验的合理成熟的程序员,但从来没有听过设备端口/中断(我甚至不知道术语),更不用说编写一个硬件了。 从我希望能够做的开始, 购买带有2,3或10个按钮的简单套件 通过USB将设备插入我的电脑 按下按钮后,收听设备并编写一些代码以执行某些操作。 我认为这是一个很好的起点,任何人都有指向硬件的指针或我如何开始这个?

模拟Fn + F11按键

你能告诉我如何在笔记本电脑上模拟按键Fn + F11吗? 我是否必须写一个驱动程序,或类似的东西? 该平台是Windows XP Pro SP3。 编程语言是C / C ++。 目的是创建一个程序,允许通过GUI更改启用/禁用一些只能使用此热键关闭/打开的硬件设备。 IDE是Visual Studio 2010

分段故障如何在内部工作(内核/硬件)?

从广义上讲,我想知道内核(或CPU)如何知道进程试图访问它缺少权限的内存位置,以及称为MMU的神秘硬件如何帮助实现这一点。 特别是:在我看来,MMU对操作系统内核的内存管理模型(分页,内存区域,进程地址空间……)是不可知的(我认为Linux和Windows页面不完全相同,因为例如,如果我错了,请纠正我。 但是,我的CPU如何确定当前代码是否可以访问位置x ? 它如何向内核发出信号?

C-to-hardware编译器(HLL综合)

我尝试对所有C-to-hardware编译器进行调查/历史记录。 对于所有不了解它们的人:他们采用C代码然后将其转换为某种硬件描述语言(如VHDL或Verilog),然后可用于生成硬件(通常它被映射到FPGA – 但我不仅限于此,ASIC作为目标也很好)。 我已经收集了一些(+关于它们的信息)。 所以我的问题是:你知道其他任何编译器(如果有的话,有任何引用,指针,有关它们的信息)? 到目前为止我的清单: AutoESL Bach-C(夏普) C2H(Altera) C2R(Cebatech) C2Verilog(CompiLogic / C Level Design / Synposys) Carte / MAP(SRC电脑) 级联(CriticalBlue) 现金(卡内基梅隆大学,匹兹堡) Catapult-C(Mentor Graphics) CHC(Altium) CHiMPS(华盛顿大学(西雅图)/ Xilinx /很快商业?) C-to-Verilog(海法) 同志(TU Braunschweig EIS + TU Darmstadt ESA) CVC(日立) 网络(NEC) 代达罗斯(Uni Amsterdam,Uni Leiden) DIME-C(Nallatech) eXCite(YXI) FP-Compiler(Altera) FpgaC(OpenSource) GarpCC(Callahan,加州大学伯克利分校) GAUT(UBS-UniversitätFrancreich) Handel-C(Celoxica) Hthreads(堪萨斯大学) Impulse-C(脉冲加速技术) Mitrion-C(Mitrionics) DWARV(代尔夫特理工大学) NIMBLE(Synopsys,EIS Braunschweig) […]