假设我需要一个信号来表示0到5之间的数字; 显然这需要表示3比特的std_logic(即如果MAXVAL = 5,则bitwidth = { wcalc "floor(logtwo($MAXVAL))+1"}).
我知道我能做到:
SIGNAL myLogicVector : STD_LOGIC_VECTOR(2 downto 0) := 5;
Run Code Online (Sandbox Code Playgroud)
我明确指定了三个std_logic'位'的数组,并设置初始值; 然后我可以使用REPORT打印出长度(在本例中为3):
report("Bit width of myLogicVector is "& integer'image(myLogicVector'length));
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.但是,假设我使用整数(数字)类型:
SIGNAL myInteger : NATURAL range 0 to 5 := 5;
Run Code Online (Sandbox Code Playgroud)
我猜这里'编译器'('合成器')会自动推断它需要3位存储长度,因为这个整数的范围是0到5之间的值.如果是这样的话,我的问题是:是有可能以某种方式在报告中打印出这个位宽/长度/大小?
当然,诀窍是这样的:
report("Bit width of myInteger is "& integer'image(myInteger'length));
Run Code Online (Sandbox Code Playgroud)
...将失败(例如,使用" HDLParsers:3389 - 属性的前缀'长度必须是数组对象 "),因为据我所知,所有这些属性类似于'length并且'range仅适用于数组(了解VHDL属性),而整数(自然)不是数组 - 它是一个数字 :)(VHDL向量整数转换问题)
再一次,我知道我可以利用log2(从最大值计算无符号变量的宽度?) - 但我想要的只是快速看到(在合成期间)"合成器"有多少'位'分配给最终的综合设计,因此在最终的FPGA资源方面将使用多少(特别是如果我使用'泛型'以某种方式计算整数的特定最大值 …
我以前曾尝试过乱搞xulrunner,现在我再次尝试:)
事实上, “真正的”教程(XULRunner 入门 - MDN)确实表明应该拥有application.ini和其他文件(可能压缩为 .xpi,然后需要--install-app ...),然后调用应该类似于:
xulrunner `pwd`/application.ini
Run Code Online (Sandbox Code Playgroud)
...但是,我想要一种更简单的启动方法 - 因此,我希望使用单文件 XUL 应用程序方法:)(这里需要注意的是,也不能使用压缩的 .xpi 作为参数xulrunner,请参阅XULRunner 问题 - DonationCoder.com)
问题是,我几乎 100% 确定在过去的某个时刻,我使用过一个简单的单文件 XUL 应用程序,如(伪代码)所示:
xulrunner my-xul-app.extension
Run Code Online (Sandbox Code Playgroud)
...但我不记得它是怎么进行的:) 那么,这可能是用xulrunner,还是只能用firefox?
据我记得,我使用了类似“my-xul-app.xul”文件(作为单文件应用程序)的东西,它仅指定一个带有单个按钮的窗口(这实际上不能由于缺乏javascript而做任何事情) - 我现在想重复同样的事情,以刷新我的记忆(除非我混淆了当时的一些东西:))
首先,我找到了HOWTO: Getting Started with Linux Standalone Apps using XUL - Ubuntu Forums (2007),并将example.xul其中使用的文件修改为:
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window
id = …Run Code Online (Sandbox Code Playgroud) 我想这将是一个关于在cmake中包含现有makefile的库的一般性问题; 但这是我的背景 -
我试图包含scintilla在另一个CMake项目中,我有以下问题:
在Linux上,scintilla在(比如)${CMAKE_CURRENT_SOURCE_DIR}/scintilla/gtk目录中有一个makefile ; 如果你make在那个目录中运行(像往常一样),你会得到一个${CMAKE_CURRENT_SOURCE_DIR}/scintilla/bin/scintilla.a文件 - 我猜这是静态库.
现在,如果我尝试使用cmake ADD_LIBRARY,我必须在cmake中手动指定scintilla的来源 - 我宁愿不要弄乱它,因为我已经有了一个makefile.所以,我宁愿调用通常的scintilla make- 然后指示CMAKE以某种方式引用结果scintilla.a.(我想这不会确保跨平台兼容性 - 但请注意,目前跨平台对我来说不是问题;我只想构建scintilla作为已经使用cmake的项目的一部分,仅在Linux中)
所以,我尝试了一下这个:
ADD_CUSTOM_COMMAND(
OUTPUT scintilla.a
COMMAND ${CMAKE_MAKE_PROGRAM}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/scintilla/gtk
COMMENT "Original scintilla makefile target" )
Run Code Online (Sandbox Code Playgroud)
...但是,add_custom_command添加了" 没有输出的目标 "; 所以我正在尝试几种方法来构建它,所有这些都失败了(作为注释给出的错误):
ADD_CUSTOM_TARGET(scintilla STATIC DEPENDS scintilla.a) # Target "scintilla" of type UTILITY may not be linked into another target.
ADD_LIBRARY(scintilla STATIC DEPENDS scintilla.a) # Cannot find source file "DEPENDS".
ADD_LIBRARY(scintilla …Run Code Online (Sandbox Code Playgroud) 我几乎总是在VHDL中遇到这个问题,它可能与我的思维方式有关; 所以我希望有人能指出正确的思考方式.
无论如何,我开始需要一个变量(或者更确切地说,一个"寄存器"),如果启用信号说低,它基本上会复制输入信号的值 - 如果使能则保持它的"最后"值信号很高.(现在我写了这个,我看到,隐含地,这里的采样将发生在使能信号的上升沿 - 从低到高的过渡;因为只要使能为低有效,那么对于任何小的增量,输入传播到寄存器,因此"覆盖"从"先前"增量时间设置的值.
所以,我的第一次尝试通常是最简单的 - 在我的VHDL文件中放置这样的东西:
wdata_reg <= wdata_in when (en_n = '0');
Run Code Online (Sandbox Code Playgroud)
...这意味着一个非时钟/异步电路 - 虽然我确实得到了我期望的模拟结果,ISE WebPack的xstsythnesizer,例如barfs:
WARNING:Xst:737 - Found 8-bit latch for signal <wdata_reg>. Latches may be generated from incomplete case or if statements. We do not recommend the use of latches in FPGA/CPLD designs, as they may lead to timing problems.
然后,我想我刚刚描述的(非时钟/异步'采样'寄存器) - 根据定义,是一个锁存器?所以,我不确定我是否想要那里.
另一方面(如果我没记错的话)我曾经曾尝试在状态机中编写这样的代码(所以,钟表):
...
IF en_n = '0' THEN
wdata_reg <= wdata_in;
END IF;
...
Run Code Online (Sandbox Code Playgroud)
......而且,我相信,编译器并没有抱怨这一点(它按预期工作). …
我刚刚发现帖子Adobe 论坛:规范中的简单文本字符串示例已损坏。,所以我对查找纯文本源代码 PDF 示例很感兴趣。
所以,通过那个帖子,我最终发现:
PDF 1.7 规范在第 699 页附录“_Annex H(信息性)示例 PDF 文件”;从那里开始,我想尝试“H.3 简单文本字符串示例”(“经典的 Hello World”)。
所以我试着把它保存为hello.pdf(_except 当你从 PDF32000_2008.pdf 复制时,你可能会得到“ %PDF-1. 4” - 即在 之后插入一个空格1.,必须删除_):
%PDF-1.4
1 0 obj
<< /Type /Catalog
/Outlines 2 0 R
/Pages 3 0 R
>>
endobj
2 0 obj
<< /Type /Outlines
/Count 0
>>
endobj …Run Code Online (Sandbox Code Playgroud) 在这个答案中'GhostScript命令行参数将EPS转换为PDF' ; 据说pdfwriteGhostscript设备的默认分辨率是720x720,我最初觉得难以置信!
有没有办法列出Ghostscript设备的默认选项?
与如何在 gnuplot 中设置标签和线条相同的颜色相关- 但不完全相同...使用此代码:
set style line 1 linetype 1 linewidth 2 pointtype 3 linecolor rgb "aquamarine"
set style line 2 linetype 1 linewidth 2 pointtype 3 linecolor rgb "blue"
set style line 3 linetype 1 linewidth 2 pointtype 3 linecolor rgb "coral"
set xrange [0:3]
set yrange [0:3]
# function to get style index for coloring:
getCol(x) = (x==0)?1:((x==1)?2:3);
plot \
'-' using ($1+0.5):($2+0.5):(getCol($2)) with impulses \
lc variable notitle, \
"" using ($1+0.5):($2+0.5):(stringcolumn(2)):(getCol($2)) with labels \
textcolor …Run Code Online (Sandbox Code Playgroud) 对于冗长的帖子道歉,我在以较短的方式制定它时遇到了麻烦.此外,这可能更适合Unix和Linux Stack Exchange,但我会先在SO处尝试,因为有一个ftrace标签.
无论如何 - 我想观察用户程序的机器指令是否在完全function_graph捕获的上下文中执行ftrace.一个问题是我需要这个旧内核:
$ uname -a
Linux mypc 2.6.38-16-generic #67-Ubuntu SMP Thu Sep 6 18:00:43 UTC 2012 i686 i686 i386 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
......在这个版本中,没有UPROBES- 正如3.5 [LWN.net]中的Uprobes应该能够做到这一点.(只要我不需要修补原始内核,我就会愿意尝试使用树构建的内核模块,因为User-Space Probes(Uprobes)[chunghwan.com]似乎可以证明;但是至于我可以从0看到:基于Inode的uprobes [LWN.net],2.6可能需要一个完整的补丁)
但是,在这个版本上,有一个/sys/kernel/debug/kprobes,和/sys/kernel/debug/tracing/kprobe_events; 和Documentation/trace/kprobetrace.txt意味着可以直接在地址上设置kprobe; 即使我无法在任何地方找到如何使用它的例子.
在任何情况下,我仍然不确定使用什么地址 - 作为一个小例子,假设我想跟踪程序main功能的开始wtest.c(包括在下面).我可以这样做来编译并获得一个机器指令汇编列表:
$ gcc -g -O0 wtest.c -o wtest
$ objdump -S wtest | less
...
08048474 <main>:
int …Run Code Online (Sandbox Code Playgroud) 我有一个损坏的git repo,显然我设法恢复了(通过.git/objects从远程rsync进行恢复),因为我已经做到了:
$ git fsck --full
Checking object directories: 100% (256/256), done.
Checking objects: 100% (7628/7628), done.
dangling blob ac27b1087864e0b313fed793521090cfc03c82cb
dangling blob 22aae8babcc61b3048557531c1550cb4fe33de93
dangling blob 62bd6159a9e19187a778c0ae5e7ef4f0b227197b
Run Code Online (Sandbox Code Playgroud)
此时悬空的斑点似乎是这些:
$ tree -p .git/objects/
.git/objects/
??? [drwxrwsr-x] 22
? ??? [-r--r--r--] aae8babcc61b3048557531c1550cb4fe33de93
??? [drwxrwsr-x] 62
? ??? [-r--r--r--] bd6159a9e19187a778c0ae5e7ef4f0b227197b
??? [drwxrwsr-x] ac
? ??? [-r--r--r--] 27b1087864e0b313fed793521090cfc03c82cb
??? [drwxrwsrwt] info
? ??? [-rw-rw-r--] packs
??? [drwxrwsrwt] pack
??? [-r--r--r--] pack-65f501f2463a843b574db1ac1bde89b44e9acf38.idx
??? [-r--r--r--] pack-65f501f2463a843b574db1ac1bde89b44e9acf38.pack
5 directories, 6 files
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试时git gc --prune=today,我得到了: …
比方说,我需要在修订/提交哈希 id 处获取https://github.com/mozilla/gecko-dev042b84a。现在,整个存储库是(在克隆之前查看 github 存储库的大小?):
wget -qO- https://api.github.com/repos/mozilla/gecko-dev | grep size
# "size": 3891062, # this in kB
Run Code Online (Sandbox Code Playgroud)
......这对我来说有点太多了。所以,我想,我会得到一个浅层克隆 - 仅此一项就可以获得近 400 MB:
git clone --depth 1 https://github.com/mozilla/gecko-dev
# remote: Counting objects: 231302, done.
# Receiving objects: 100% (231302/231302), 392.95 MiB
Run Code Online (Sandbox Code Playgroud)
现在,这克隆了 HEAD,我不能从这里直接到达 042b84a,尤其是我使用的 git 1.9.1 版客户端(如何浅克隆深度为 1 的特定提交?;我克隆 repo 后如何获取远程分支)使用 git clone --depth 1;Git:获取深度为 1 的 git 存储库的特定修订版)。显然,除了不浅化 repo(无论如何下载与完整克隆相同)之外,我能做的最好的事情就是慢慢增加深度。
我不确定“深度”是否仅对应于 HEAD 和给定修订版之间的提交次数 -在远程分支上获取 git sha depth注意到对于完整克隆,您可以执行以下操作: …