标签: ada

开源交叉编译器支持Ada多任务RTOS

Ada有哪些RTOS可以使用开源/免费交叉编译器,支持多任务/多线程?

我有一个Atmel AT90USB162芯片,我想用Ada编程.我的第一个选择是使用AVR-Ada对其进行编程,但由于它没有任务支持,因此它是不可选择的(现在我对如何支持其任务转移没有任何线索).所以我需要一个更强大的方法.我想过使用QNX,但它比我的芯片架还要复杂得多.

我得到了AVR芯片支持uC/OS-II和FreeRTOS的信息.FreeRTOS或uC/OS-II有免费的Ada交叉编译器吗?

谢谢.

avr rtos ada cross-compiling rtems

9
推荐指数
3
解决办法
2308
查看次数

关于Ada的"范围"

Ada中的以下源代码行,

type Airplane_ID is range 1..10;
Run Code Online (Sandbox Code Playgroud)

,可以写成

type Airplane_ID is range 1..x;
Run Code Online (Sandbox Code Playgroud)

,其中x是变量?我问这个是因为我想知道是否可以修改x的值,例如通过文本输入.提前致谢.

ada

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

Gnat for Mac Ada编程

我正在编程中学习Ada 95,我想在我的MacBook上安装gnat编译器.我不知道在哪里可以获得一个好的gnat来编译我的代码,以及如何安装它.

我目前有gedit作为我的文本编辑器,因为这是我们在实验室环境中使用的.我是Mac世界的新手,所以任何帮助都会非常感激.

macos text-editor ada gnat

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

Ada相当于C/C++中的局部静态变量

我来自嵌入式系统上的C/C++,并且我们在函数内部一直使用静态变量,以便在整个调用期间保留该值.

在Ada中,似乎只能使用等效的文件级静态变量来完成.是否有Ada等价物.

C++:

function Get_HW_Counter() {
   static int count = 0;
   return ++count;
}
Run Code Online (Sandbox Code Playgroud)

阿达:??

ada

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

为什么Ada中没有多重或阻止评论?

为什么在Ada编程中没有像C/C++那样的多重或块注释/* */

comments ada

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

是否可以为 Protocol Buffer 中的字段定义数值范围?

我生活在一个非常安全/关键的 Ada-ic 环境中,并且养成了定义良好且有界的类型定义的习惯。我还遇到过很多 ASN1 使用/传播者。

我周围的一些人将 ASN1 定义为优于协议缓冲区的关键功能之一是能够定义并因此检查数据范围

所以,

  • Protocol buffers 真的没有任何范围定义系统吗?
  • 协议缓冲区之上是否有任何方法可以提供这样的功能?

常见的数字类型定义(例如 int32、int64)超出了此处的范围。


我读过谷歌概述,发现没有提及任何数据范围定义。除了有关枚举管理/表示的功能以及一些排序功能之外。

为了提供一些其他参考,我听说/阅读了下面的链接,并了解了 Ada 实施项目。

有谁知道协议缓冲区的 Ada 插件吗?

这导致

http://www.diva-portal.org/smash/get/diva2:690878/FULLTEXT02.pdf

https://github.com/persan/protobuf-ada

types ada protocol-buffers

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

Julia 中的系统信号拦截

在 Linux 下运行的 Julia 程序中,我需要在调整控制台窗口大小时启动一个专用操作。那么在 Julia 中,我如何拦截系统信号 SIGWINCH(窗口大小调整)并将其附加到一个执行所需操作的函数上?

在 Ada 中,声明它相当简单:

 protected Signalhandler is
      procedure Handlewindowresizing;
      pragma Attach_Handler (Handlewindowresizing, SIGWINCH);
 end Signalhandler;
Run Code Online (Sandbox Code Playgroud)

基于 SCHEMER 思想的暂定解决方案:我尝试使用 C 库进行 SIGWINCH 中断监视。

我的图书馆.h

void Winresize (void Sig_Handler());
Run Code Online (Sandbox Code Playgroud)

我的图书馆

#include "myLibrary.h"
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>

void Winresize(void sig_handler (void)) { 
     signal(SIGWINCH, sig_handler);
}
Run Code Online (Sandbox Code Playgroud)

编译和库准备

gcc -c -Wall -fPIC myLibrary.c

gcc -shared -fPIC -o myLibrary.so myLibrary.o

使用 C-Library 的 Julia 程序:

function getc1()    
ret = ccall(:jl_tty_set_mode, Int32, (Ptr{Cvoid},Int32), stdin.handle, true)    
ret == 0 …
Run Code Online (Sandbox Code Playgroud)

signals ada julia

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

在Ada中的Integer'Image值之后取消空格

当我在下面打印这个程序时 -

procedure put (Date:Date_Type) is
begin
  Put(Integer'Image(Date.Day)); --'
  Put("-");
  Put(Integer'Image(Date.Month)); --'
  Put("-");
  Put(Integer'Image(Date.Year)); --'
end;
Run Code Online (Sandbox Code Playgroud)

结果是(例如):1- 1- 2010

我的问题是如何在每个Date值之前阻止一个字符的间距.(日月年).当然我正在使用日期程序,记录里面的日/月/年.

提前致谢.

ada

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

Ada:获取用户对String(1..10)的输入并用空格填充其余部分

我已经定义了

subtype String10 is String(1..10);
Run Code Online (Sandbox Code Playgroud)

我试图获得键盘输入,而无需在输入之前手动输入空格.我尝试了get_line()但是由于某些原因它在输出get put()命令之前实际上不会等待输入,而且我也认为它会在那之前留下字符串中的内容并且不用空格填充它.

我知道并使用了Bounded_String和Unbounded_String,但我想知道是否有办法使这项工作.

我试过为它做一个函数:

--getString10--
procedure getString10(s : string10) is
   c : character;
   k : integer;
begin
   for i in integer range 1..10 loop
      get(c);
      if Ada.Text_IO.End_Of_Line = false then
         s(i) := c;
      else
         k := i;
         exit;
      end if;
   end loop;

   for i in integer range k..10 loop
      s(i) := ' ';
   end loop;
end getString10;
Run Code Online (Sandbox Code Playgroud)

但是,在这里,我知道这s(i)不起作用,我不认为

"if Ada.Text_IO.End_Of_Line = false then" 
Run Code Online (Sandbox Code Playgroud)

做我希望它会做什么.它只是一个占位符,而我正在寻找实际的方法.

我一直在搜索几个小时,但是Ada文档不像其他语言那样可用或清晰.我找到了很多关于获取字符串的内容,但不是我正在寻找的内容.

string input ada

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

Ada实时需要底层操作系统吗?

通过阅读文档我已经理解,Ada实时模块与操作系统完全隔离.没有底层操作系统和资源管理器就可以实现并发.Ada处理任务调度,时间管理,任务状态转换,列表管理,任务优先级,锁定策略,调度策略,ISR,任务间通信等.

如果是这样,那么Ada实时模块是一种实时操作系统?

real-time ada

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