小编Kam*_*ath的帖子

嵌入式软件可维护性 - 配置

我正在开发一种嵌入式软件,可以在两到三个不同的微控制器系列上运行.现在我们有makefile,它读取配置开关并进行编译.

对于开发人员和非开发人员来说,使用编译开关和构建配置保持更新的过程变得越来越乏味.我知道Linux内核使用ncurses来生成编译配置.我正在寻找一个类似的工具,但跨平台.它应该在Windows和Linux上运行.我知道这仍然无法解决问题,但它对非开发人员更有吸引力,我也可以快速共享我的.config文件或将其与现有文件进行比较.配置将按特定顺序排列,这里的diff工具将有所帮助.

任何人都可以与类似的项目维护或参考项目(多个微型嵌入式和通用代码库)分享他们的经验.只想了解最佳实践.

PS:语言使用C,8/16位微处理器,没有操作系统只是基于计时器的批处理调度程序(裸机)

c embedded makefile code-maintainability

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

gdb - 中断静态函数

我在两个不同的文件中有两个具有相同名称的静态函数.

radio.c
-------
static audio_call_back(...)
{
    // code to execute when audio from radio is acquired
}

mp3.c
-----
static audio_call_back(...)
{
    // code to execute when audio from mp3 player is acquired
}

它们由函数指针方法执行.

使用gdb,我怎么能在mp3文件的"audio_call_back"中有一个断点.默认情况下,如果我运行

(gdb) break audio_call_back

在radio.c文件中设置断点.如何在文件mp3.c中的"audio_call_back"中设置断点

debugging gdb

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

通过远程服务器使用ECLIPSE GUI的GDB?

我很乐意用ECLIPSE调试我的软件作为GDB的前端.我们的构建如下.

  • 带有代码库的Linux服务器
  • Windows通过Samba访问代码库(Eclipse IDE)
  • 软件是在带有makefile的Linux服务器上构建的(这里没有ECLIPSE控件,现在它更像是一个编辑器)
  • NFS挂载到目标(它的嵌入式SW)
  • 使用命令行GDB进行远程调试

我没有选择改变我的构建环境,它有太多的努力,而且与Linux相比,Cygwin太慢了.

我可以访问服务器的唯一方法是使用ssh.服务器只有基本的X-Window管理器,因此VNC不是一个选项.

有什么方法可以将ECLIPSE用作IDE而不是编辑器?我主要对利用其远程调试功能感兴趣.


编辑

错误建立沟通

目标

#./mipsel-linux-gdbserver-7.1 :1234 hello
Run Code Online (Sandbox Code Playgroud)

主办

$ gdb hello
(gdb) target remote 10.201.122.177:1234
Remote debugging using 10.201.122.177:1234
warning: while parsing target description (at line 10): Target description speci
fied unknown architecture "mips"
warning: Could not load XML target description; ignoring
Reply contains invalid hex digit 59
Run Code Online (Sandbox Code Playgroud)

我也尝试从cygwin源代码中为我的目标重新编译gdb服务器,但结果没有什么不同.我的目标架构是MIPS.


可能的另一种方法

RSE(远程系统资源管理器)的替代品是什么,我想达到什么目的?

eclipse gdb eclipse-cdt gdbserver eclipse-rse

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

输入long Vs Type long int

跟随typedef意味着什么,以及为什么需要它

typedef unsigned long int ULONG;
Run Code Online (Sandbox Code Playgroud)

它有多么不同

typedef unsigned long ULONG;
Run Code Online (Sandbox Code Playgroud)

对于gcc sizeof int = 4,sizeof long = 8,sizeof ULONG = 8.

c

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

以clearcase重命名视图

是否可以重命名清晰视图?如果是的话怎么做.

我通常会根据我在该视图中进行的修复或增强来提供视图名称.完成后,我最终将该视图重用于其他任务.对于其他SCM我没有任何问题,我基于它对构建树的更改了解.clearcase非常慢,如果我必须通过更改设置知道它将需要2-5分钟.

clearcase configuration-management

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

宏连接,函数名生成

#define Map(From, To, val)          \
        Map__##From__##To(val)


Map(TYPEA, TYPEB, 22);
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我想知道为什么Map(TYPEA, TYPEB, 22);扩展为 Map__From__TYPEB(22);而不是Map__TYPEA__TYPEB(22);

我使用 gcc -E 进行扩展。

c macros concatenation c-preprocessor

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

理解正则表达式

我正在尝试解析由gcc生成的映射文件,用于函数地址.这里有一个可能的 解决方案(python),但它对我不起作用.

我试图了解提供的解决方案.它有两个复杂的正则表达式..

m = re.search('^\[([0-9 ]+)\]\s+(.+)\s*$',line )
m = re.search('^([0-9A-Fx]+)\s+([0-9A-Fx]+)\s+(\[([ 0-9]+)\]|\w+)\s+(.*?)\s*$', line)
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释一下RE在寻找什么?

有没有其他工作解决方案从gcc生成mapfile获取函数地址?

c python regex gcc

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

SML中嵌套"if else"的语法

我想在SML中实现嵌套的if else表达式.任何人都可以突出其语法.假设有三个条件C1,C2,C3我需要在C代码中等效.

if (C1) { 
    return true;
}
else {
    if(C2) {
        return true;
    }
    else {
         if (C3) {
             return true;
         }
         else {
             return false;
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了以下内容,但将其视为"if,else if,and else"案例

if C1 then true
else if C2 then true
else if C3 then true
else false
Run Code Online (Sandbox Code Playgroud)

sml smlnj

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

行插入时QTableView刷新

在使用QSqlQueryModel的QTableView中,刷新新行插入视图的正确方法是什么?我看到重置模型与视图有效,但我不认为这是正确的方法.

简单的代码片段应该有所帮助.

c++ qt

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

从主/去游乐场开始基准测试

我正在尝试创建一套基准测试

https://play.golang.org/p/uWWITU-WKaL

包主

import (
    "fmt"
    "testing"
)

func runall(a, b string) (bool, error) {
    return true, nil
}

func main() {
    bench := []testing.InternalBenchmark{
        {
            F: Benchmark_Dev,
        },
    }

    tests := []testing.InternalTest{
        {
            F: Test_Dev,
        },
    }
    testing.Main(runall, tests, bench, nil)
}

func Test_Dev(t *testing.T) {
    fmt.Println("Test_Dev")
}

func Benchmark_Dev(b *testing.B) {
    fmt.Println("Benchmark_Dev")
    b.ReportAllocs()
    for i := 0; i < b.N; i++ {
        res := i % 10
        fmt.Println(res)
    }
}
Run Code Online (Sandbox Code Playgroud)

我看到测试运行良好,但基准测试从未运行过.

go

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

clang 使用哪个汇编器?

我不清楚 clang 使用的汇编器。使用 AFAIK 本机又名 GNU 汇编器和链接器(与 gcc 一起提供)。

clang -v main.c
clang version 3.4.2
Target: x86_64-unknown-linux-gnu
Thread model: posix
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.5
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.5.3
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.6
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.6.3
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.5
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.5.3
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.6
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.6.3
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.5
 "/usr/bin/clang-3.4" -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name main.c -mrelocation-model static -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases …
Run Code Online (Sandbox Code Playgroud)

clang

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

正则表达式检查括号中的C代码

我是正则表达式的新手,我只使用它们进行搜索.所以我玩egrep,但有了egrep,我看到了一些限制.

对于Linux有什么好的正则表达式工具?我知道有sed但它通常用于场景搜索和替换.我可以使用sed只搜索我的文件吗?如果有,怎么样?

根据我的具体问题,我需要在C源代码中搜索实例,其中附加括号用于if语句.

if (( a == b))应该匹配,if (a == b)不应该匹配.
if(a && ((b||c)))应该匹配,if(a && (b||c))不应该匹配.

我希望它很简单,我会在以后添加其他案例等>= !=.

regex linux

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

python生成序列

我有一个很大的序列相关问题要解决以下是子问题,我确信它在python中是非常基本的,我不知道.

seq = [4*x for x in range (1,(20/4))]
generates seq = [4, 8, 12, 16]
Run Code Online (Sandbox Code Playgroud)

我该怎么生成

[4, 4, 8, 8, 12, 12, 16]

seq = [4*x, 4*x for x in range (1,(20/4))] does not work
Run Code Online (Sandbox Code Playgroud)

我可以通过编写一个小函数轻松解决上述问题,但我在变量定义时需要它.

python

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