小编ily*_*725的帖子

处理嵌入式Tcl运行时执行的退出命令

我有一个小的shell应用程序,它嵌入了Tcl来执行一些Tcl代码.使用Tcl_CreateInterp初始化Tcl解释器.一切都很简单:

  1. 用户类型Tcl命令
  2. 该命令将传递给Tcl_Eval进行评估
  3. 重复

但是如果用户键入'exit',这是一个有效的Tcl命令,整个事情--Tcl解释器和我的shell应用程序 - 会自动退出.

问:有什么方法可以捕获来自Tcl解释器的退出信号.我真的不想检查每个用户命令.我尝试了Tcl_CreateExitHandler,但它没有用.

非常感谢.

interpreter tcl

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

抓住"Tcl解释器错误"

有没有办法赶上全球"Tcl解释器错误"?例如,我想在一些文件中自动存储后面的消息.

tcl

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

打印和pexpect日志记录

我有一些代码pexpect用于控制进程和代码中的一些打印.主要目标(在这个问题中)是将pexpect输出和打印记录到某个日志文件中.我遇到的问题是pexpect线条(发送和接收的数据)与印刷品混合在一起,没有明显的逻辑.我期待打印字符串和pexpect输出将按它们发出的顺序记录.

示例代码如下:

#!/usr/bin/env python

import pexpect
import time, sys, os

###############################################################################
# Subclass of file object to avoid recording extensive whitespace characters
class CleanFile(file):
    def write (self, text):
        # Remove the whitespaces
        out_text = ''
        # process the backspace properly
        bline = ''
        for c in text:
            if (ord(c) == 0x8):
                if (len(bline) == 0):
                    # Move the file pointer.
                    file.seek(self, -1, os.SEEK_CUR);
                else:
                    bline = bline[:-1]
            else:
                bline += c

        # …
Run Code Online (Sandbox Code Playgroud)

python pexpect

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

volatile上的gcc unused-but-set-variable警告

我有一个小函数,使用volatile变量将值写入HW

void gige_rx_prepare(void) {

    volatile uint hw_write;

    // more code here

    hw_write = 0x32;
}
Run Code Online (Sandbox Code Playgroud)

gcc版本4.7.3(Altera 13.1 Build 162)将此变量标记为已设置但未使用,即使它是易失性的,也便于写入HW寄存器.

我仍然希望在任何其他变量上看到此警告.有没有办法避免在volatile变量上发出此警告,而无需为代码中的每个volatile变量设置gcc属性?

c gcc

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

U-boot.bin和uImage.bin有什么区别

u-boot.bin和之间感到困惑uImage.bin.我想uImage.bin只是压缩版本,u-boot.bin它的大小应该小于u-boot.bin.但是在我的构建环境中,我发现的是u-boot.bin尺寸小于uImage.bin.

有谁能让我知道u-boot.binuImage.bin?之间有什么区别?

linux linux-kernel embedded-linux u-boot

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

git log缩写格式长度

我想以缩写格式从GIT日志中获取SHA编号.此命令将起作用:

git log -1 --format=%h
Run Code Online (Sandbox Code Playgroud)

但是,默认缩写格式的长度为7个数字.有什么方法可以改变吗?

git

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

proc声明中的Tcl全局变量

所以我有一块继承的Tcl代码.基本上它执行以下操作:

set LOG_ALL     0
set LOG_DEBUG   1
set LOG_INFO    2
set LOG_WARN    3
set LOG_ERROR   4
set LOG_FATAL   5
set LOG_SILENT  6

proc v2 {vimm {log LOG_DEBUG}} {
    global LOG_DEBUG
    if {$log == $LOG_DEBUG} {
        puts "log"
    } else {
        puts "no log"
    }
}
Run Code Online (Sandbox Code Playgroud)

我怀疑设计的最初想法是使用全局变量作为log参数的默认值.但是,它没有按预期工作,我无法找到如何正确编写,假设它甚至可能.

哪种语法是正确的?

谢谢你的帮助.

tcl

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

在 Yocto 构建中禁用标准 systemd 服务

我需要启动我自己的systemd服务,我们称之为custom.service。我知道如何编写一个配方,以便在启动时添加和启用它:

SYSTEMD_SERVICE_${PN} = "custom.service"
SYSTEMD_AUTO_ENABLE_${PN} = "enable"
Run Code Online (Sandbox Code Playgroud)

但是,它与默认systemd服务之一冲突- systemd-timesyncd.service.

systemd即使systemd_XX.bb实际启用它,是否有一种很好的首选方法来禁用我的 bitbake 文件中的默认服务?

我可以创建一个systemd_%.bbappend文件来修改systemd设置,但我找不到可以禁用一项服务而启用所有其他服务的位置。


我发现的工作解决方案是timesyncd使用

PACKAGECONFIG_remove = "timesyncd"
Run Code Online (Sandbox Code Playgroud)

但我想知道这是否是一种合适的方式,是否有一种方法可以禁用它,但留在系统中。

systemd yocto

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

以编程方式获取 CMake 项目中的所有目标

我想让一个特定目标依赖于我项目中所有其他添加的目标。换一种说法 - 我希望这个目标(比如lint)在所有库和应用程序构建完成后运行。

在指定的顶级CMakeLists.txt文件中是否有办法project获取使用添加CMakeLists.txt的目录中其他文件添加的所有目标的列表add_subdirectory?然后我可以使用add_dependencies来指定顺序。有一个BUILDSYSTEM_TARGETS属性,但它仅适用于目录级别。

如果有其他方法可以实现这一点,请告诉我。我使用 CMake 3.14。

cmake

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

Tcl信息存在

我有一个奇怪的Tcl案例,也许我只是不明白.以下代码在顶层完成(不在任何过程内部):

if {![info exists g_log_file_name]} {
    set g_log_file_name "default.txt"
}
Run Code Online (Sandbox Code Playgroud)

我希望它能做的是声明一个具有某些值的全局变量(如果它尚未声明)(可以在其他脚本或C应用程序中完成).但是,if语句总是错误的.我跑了Tcl 7.4.

可能是什么问题?

非常感谢.

tcl

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

为bitbake元工具链指定gcc版本

我刚开始学习Yocto 1.8.

bitbake meta-toolchain如文档中描述并产生相应的安装脚本运行得很好.但是,bitbake选择了我不想要的GCC版本.建议bitbake哪种版本的GCC可以选择bitbake meta-toolchain构建?

yocto

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

标签 统计

tcl ×4

yocto ×2

c ×1

cmake ×1

embedded-linux ×1

gcc ×1

git ×1

interpreter ×1

linux ×1

linux-kernel ×1

pexpect ×1

python ×1

systemd ×1

u-boot ×1