我正试图在我的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) 我正在考虑利用Boost Asio从Socket 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 ++模板的新手,所以请耐心等待.
我想要做的是通过使用模板化函数在我的类中实现某种策略模式.我认为这将内联策略.
我的理解是这可以通过仿函数来实现,但我不想引入新的类,我只想在我的类中内联策略函数.
让我们说我上课了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++ ×2
arm ×1
beagleboard ×1
boost ×1
boost-asio ×1
c ×1
can-bus ×1
omap ×1
sockets ×1
templates ×1