小编far*_*rth的帖子

Hello world,裸机Beagleboard

我正试图在我的Beagleboard-xm rev上运行一个'hello world'类型的程序.C,通过puts从程序集中调用C 函数.

到目前为止,我一直在使用它作为参考:http://wiki.osdev.org/ARM_Beagleboard

这是我到目前为止所拥有的,但没有输出.

你好ç

volatile unsigned int * const UART3DR = (unsigned int *)0x49020000;

void puts(const char *s) {
  while(*s != '\0') { 
    *UART3DR = (unsigned int)(*s); 
    s++; 
  }
}

void hello() {
  puts("Hello, Beagleboard!\n");
}
Run Code Online (Sandbox Code Playgroud)

boot.asm

.global start
start:
   ldr sp, =stack_bottom
   bl hello
   b .
Run Code Online (Sandbox Code Playgroud)

linker.ld

ENTRY(start)

MEMORY
{
    ram : ORIGIN = 0x80200000, LENGTH = 0x10000
}

SECTIONS
{
    .hello : { hello.o(.text) } > ram
    .text : { …
Run Code Online (Sandbox Code Playgroud)

c arm omap beagleboard

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

通过SocketCAN提升:: asio

我正在考虑利用Boost AsioSocket CAN读取数据.在linux/can.h中没有任何花哨的东西,设备应该像loopback接口一样,并与原始套接字一起使用.

看一下basic_raw_socket界面,似乎我可以利用 basic_raw_socket :: assign来分配用它创建的本机套接字

socket( PF_CAN, SOCK_RAW, CAN_RAW );
Run Code Online (Sandbox Code Playgroud)

这就是我到目前为止所拥有的

namespace can {
       class CanSocket {
       public:
               typedef boost::asio::ip::basic_endpoint<CanSocket> endpoint;
               typedef boost::asio::ip::basic_resolver_query<CanSocket> resolver_query;
               typedef boost::asio::ip::basic_resolver_iterator<CanSocket> resolver_iterator;
               typedef boost::asio::basic_raw_socket<CanSocket> socket;
               typedef boost::asio::ip::basic_resolver<CanSocket> resolver;

               CanSocket()
                       : _protocol( CAN_RAW )
                       , _family( PF_CAN )
               {
               }

               static CanSocket v4()
               {
                       return CanSocket();
               }
               static CanSocket v6();
               int type() const;
               int protocol() const;
               int family() const;

               friend bool operator==(const CanSocket& p1, const …
Run Code Online (Sandbox Code Playgroud)

c++ sockets boost can-bus boost-asio

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

C++内联模板策略功能

我是c ++模板的新手,所以请耐心等待.

我想要做的是通过使用模板化函数在我的类中实现某种策略模式.我认为这将内联策略.

我的理解是这可以通过仿函数来实现,但我不想引入新的类,我只想在我的类中内联策略函数.

让我们说我上课了Calculator.

Calculator.h

#ifndef CALCULATOR_H
#define CALCULATOR_H


class Calculator
{
    public:
        Calculator();
        virtual ~Calculator();
        typedef void (*Strategy)(int param1, int param2);

        void add(int param1, int param2);

        template<class T>
        void doStrategy(T strategy, int param1, int param2);
    protected:
    private:
};

#endif
Run Code Online (Sandbox Code Playgroud)

Calculator.cpp

Calculator::Calculator()
{
    //ctor
}

Calculator::~Calculator()
{
    //dtor
}

void
Calculator::add(int param1, int param2)
{
    std::cout << "Sum " << param1+param2 << std::endl;
}

template<class T>
void
Calculator::doStrategy(T strategy, int param1, int param2)
{
    strategy(param1,param2);
}
Run Code Online (Sandbox Code Playgroud)

main.cpp中 …

c++ templates

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

标签 统计

c++ ×2

arm ×1

beagleboard ×1

boost ×1

boost-asio ×1

c ×1

can-bus ×1

omap ×1

sockets ×1

templates ×1