Nios/Qsys
Tokeyman
平凡岗位的平凡人
展开
-
使用C++来写NiosII[4]-UART
先看看效果main.cppGNios::Uart u0(UART_BASE);void u0_hanlder2(uint8 content){ uint8 rxdata=content; u0.Send(rxdata);}int main() { u0.Init(115200,UART_IRQ_INTERRUPT_CONTROLLER_ID,UART_IRQ,u0_hanlder2); //波特率115200,接收中断函数为u0_handler2 while (1) { }原创 2020-07-12 23:29:33 · 220 阅读 · 0 评论 -
使用C++来写NiosII[3]-EXTI
将带有中断的PIO单独独立出来一个类叫Exti外部中断类。显而易见,这个Exti实际上是个GPIO的继承类先看看效果main.cppuint8 key_flag=0;GNios::Gpio Led(LED_BASE);GNios::Exti keyin(KEY1_BASE);GNios::Exti key2in(KEY2_BASE);void ISR_Key1Handler(){ key_flag=1; keyin.ClearEdgeCapture(GpioPin0);}voi.原创 2020-07-12 23:21:47 · 184 阅读 · 0 评论 -
使用C++来写NiosII[2]-GPIO
先看看效果比如我们现在要实现点亮一个灯的操作,采用了C++进行封装之后,在主程序中就会非常的简洁。main.cppGNios::Gpio Led(LED_BASE);int main() { //Hello world to jtag printf("Hello from Nios II!\n"); //led int i; while (1) { for (i = 0; i < 4; i++) { //IOWR_ALTERA_AVALON_PIO_DATA原创 2020-07-12 23:06:11 · 402 阅读 · 0 评论 -
使用C++来写NiosII[1]-前言
特此说明一下,并不是非得用C++来进行开发。对于绝大部分的应用来说,用C已经足足够了,况且对于一般的NiosII项目来说,硬件上不停的变化,也会导致大部分的代码都是写一次即可,能够完成项目就好。那么为什么还是要写一下这个东西,就是因为在实际的大型项目的开发中,C++是有独特的优势的,当项目程序越来越大,涉及到的算法和控制流程越来越多的情况下,面向对象的C++更能够体现软件工程的思想。而且随着项目的持续推进,更多的关注点应该是程序流程和应用流程本身,这个时候就稍微需要隐藏一下底层的东西,保持代码的干净,方.原创 2020-07-12 22:17:14 · 376 阅读 · 0 评论 -
正确理解Avalon MM总线的动态地址寻址Dynamic Addressing
目前Nios已经取消了Native寻址模式(即从设备到主设备寄存器映射),全部采用了Dynamic寻址模式,查找了目前存在的一些资料,尤其是某些教程,还在使用Native模式,对Dynamic动态模式避而不谈,还有好多资料摸棱两可,说的模模糊糊,感觉应该是没吃透这个东西,要么就是调试程序的使用使用固有的2或者4方法,其实为什么这么做,可能也不知道。下面根据查询官方手册,给出我的理解。以下所说的32bit,16bit表示的都是数据宽度。所有的寄存器都是8bit的!!在Master来看,一个地址只对应.原创 2020-06-23 00:16:21 · 822 阅读 · 1 评论 -
Function‘__builtin_stwio’ could not be resolved
Function ‘__builtin_stwio’ could not be resolvedIf you are using Eclipse IDE for Altera NIOS II C++ firmware development, you will probably be annoyed by the following two reported semantic error messages when you are using IOWR() and IORD() macros from t转载 2020-06-25 00:34:58 · 406 阅读 · 0 评论