VxWorks

【JokerのZYNQ7020】Vxworks 6.9。

坚强是说给别人听的谎言 提交于 2020-02-11 01:31:21
软件环境:vivado 2017.4 硬件平台:XC7Z020 基本全程参考的官方xapp1158-zynq-7000-vxworks-bsp.pdf,但我感觉主要难度不在移植上,因为pdf里面写的已经非常详细了,而在于你是否有license能装vxworks,除了xapp1158之外,xapp1258-vxworks-7-bsp.pdf,也是一个相关的将vxworks移植到zynq的指导手册。接下来以xapp1158为例,简单说下移植过程。 手册一打开刚开始就介绍了zynq启动的一个流程,总共分为3个阶段。 阶段0时候会根据外管脚电平状态来选择启动模式,并将FSBL从外管脚配置的boot设备复制到片上RAM中; 阶段1时候FSBL从片上RAM启动,加载比特流文件将PL部分配置好,然后将UBoot加载到DDR启动; 阶段2时候UBoot启动,进一步引导kernel和ramdisk,最终系统运行。 接下来提到了,安装workbench时候不要忘记勾选zynq-7000的BSP。 一切装好之后,file---new---project,选择vxworks image project。 填写工程名后,下一步,不要忘记勾选Enable WDB Target Agent。 下一步之后,选择PROFILE_DEVELOPMENT。 finish之后,在左侧工程下方有个kernel

Does free() free the memory immediately

雨燕双飞 提交于 2020-02-08 03:51:04
问题 In my program, I am using malloc to allocate large amounts of memory (several hundred mbs, in chunks of say 25mb to 75mb at a time), I am subsequently freeing some of the chunks, then again reallocating some more. My question is when I use free() to free memory, does it immediately free the concerned block of memory, or it merely marks it for freeing. If it is merely marking for freeing later, is there some standard C library function to force it to be freed immediately. I am actually

How to configure the bootrom parameters for VxWorks 5.5?

怎甘沉沦 提交于 2020-01-25 22:32:09
问题 I have a problem configuring the bootrom parameters for my virtual machine VxWorks 5.5. I want to change the target IP address. I tried modifying the DEFAULT_BOOT_LINE macro in config.h . But, I didn't work. I use printf to check the value of DEFAULT_BOOT_LINE. It didn't changed. This seems that DEFAULT_BOOT_LINE is defined elsewhere beside config.h and can't be modified. Do you know what the problem is? Is there other methods to change the bootrom parameters? 回答1: To erase BOOT_LINE_ADRS and

How can a task wait on multiple vxworks Queues?

点点圈 提交于 2020-01-04 02:49:09
问题 We have a vxWorks design which requires one task to process both high and low priority messages sent over two message queues. The messages for a given priority have to be processed in FIFO order. For example, process all the high priority messages in the order they were received, then process the low priority messages. If there is no high priority message, then process the low priority message immediately. Is there a way to do this? 回答1: If you use named pipes (pipeDevCreate(), write(), read(

What are all the differences between pipes and message queues?

走远了吗. 提交于 2019-12-31 20:15:11
问题 What are all the differences between pipes and message queues? Please explain both from vxworks & unix perspectives. I think pipes are unidirectional but message queues aren't. But don't pipes internally use message queues, then how come pipes are unidirectional but message queues are not? What are the other differences you can think of (from design or usage or other perspectives)? 回答1: Message Queues are: UNIDIRECTIONAL Fixed number of entries Each entry has a maximum size All the queue

Executing a script from inside code in VxWorks 6.7

扶醉桌前 提交于 2019-12-31 04:03:28
问题 In VxWorks 5.5.1 you could run a script using the execute command. In VxWorks 6.7 the execute command is no longer supported. Does anyone now if there is a replacement? I am specifically talking about from inside code not command line. 回答1: Through much research it appears like there are a few ways to accomplish this but none is exactly the same as the execute command from before. As I stated in the comment below it turns out that the execute command is not an official API call. 1)

How to set TCP keep alive interval for a specific socket fd (Not system wide) in VxWorks?

旧街凉风 提交于 2019-12-25 18:19:19
问题 I created a TCP socket in an application with KEEPALIVE enabled for this socket. I can see that keepalive packets are coming with the frequency of keepalive interval which i have already set in my system variable of iptcp, i.e 30secs. Socket Creation: if( ( sockFD = socket( AF_INET, SOCK_STREAM, 0 ) ) == ERROR ) { DS_SWX_ERROR( "socket(%d,%d,%d) failed.", AF_INET, SOCK_STREAM, 0 ); return; } VxWorks TCP System Variables: [vxWorks *]# sysvar list iptcp System variables: iptcp.KeepCnt=3 iptcp

vxworks下gmac调试的总结

こ雲淡風輕ζ 提交于 2019-12-25 05:28:21
1:3280芯片手册详解过程: MAC 控制器支持 DMA 接收和发送,内部在接收和发送方向各有一个 2048 字节的 FIFO作为缓存。由于 FIFO 深度所限,MAC 控制器不支持硬件自动流控机制。 模式和带宽的切换 1:在做 MII 和 RMII 之间的切换前,应该先掉电 2:上电后软件重新配置芯片系统控制模块中MAC 的工作接口模式寄存器,之后再启动 MAC 控制器 3:需要注意的是,在收发功能开启的状态下不能对双工模式或速率进行改变(先关掉Mac收发,这样可以避免出现大量的错包的情况) 1:所有的发送中断和接收中断触发的条件都是dma操作完成(dma完成数据搬运的操作); 2:较早发送和接收中断说明数据帧较大不是一个buffer发送; 芯片的寄存器空间: MAC 模块支持以太网 PHY 的 MII 接口和 RMII 接口。 CSR(Control & Status 寄存器)共占有 8KB 地址空间,分为两段:DMA CSR 和 MAC CSR。 AHB Master 接口为 DMA 模块与系统主机的接口。 APB 接口即 CSR 接口,用于读写访问 DMA CSR 和 MAC CSR。 DMA 模块有独立的发送和接收引擎,进行系统内存与 MAC 间的数据搬运,将 CPU 的 干预最小化,只在帧发送或接收结束以及其他一些条件(如发生错误)下中断 CPU。 DMA

Compiling previously preprocessed file changes output

旧巷老猫 提交于 2019-12-23 10:28:17
问题 I have a source file which I preprocess using the options -E and -P (using GCC 4.1.2 for a vxWorks-based embedded platform). All other options are the same as when I compile the file. These options are: -Wall -march=pentium -nostdinc -O0 -fno-builtin -fno-defer-pop -g -c -o as well as all include-paths. Now when I compile this preprocessed file, the resulting object-file is much smaller (about 30%) than when I compile the original directly. And when I then link the program, the linker

How do I access my memory mapped I/O Device (FPGA) from a RTP in VxWorks?

不打扰是莪最后的温柔 提交于 2019-12-22 12:27:07
问题 When using VxWorks, we are trying to access a memory mapped I/O device from a Real-Time Process. Since RTPs have memory protection, how can I access my I/O device from one? 回答1: There are two methods you can use to access your I/O mapped device from an RTP. I/O Subsystem (preferred) You essentially create a small device driver. This driver can be integrated into the I/O Subsystem of VxWorks. Once integrated, the driver is available to the RTP by simply using standard I/O operations: open,